; Part a channel when someone on the avoid list is in it, or joins later. on LOAD { set %avoid $list(somenick, someothernick) set %avoid_wait $map() } on JOIN { if ($isme == true) { ; Scripts can't read the member list, so ask the server who is here. setat %avoid_wait $lower($chan) wait who $chan return } if ($has(%avoid, $lower($nick)) == true) { part $chan } } on NUMERIC { ; 352 is one WHO line: ... if ($code == 352) { set -l %w $split($text) set -l %c $lower($get(%w, 0)) set -l %state $get(%avoid_wait, %c) if (%state != wait && %state != left) { return } if (%state == wait && $has(%avoid, $lower($get(%w, 1))) == true) { setat %avoid_wait %c left part $get(%w, 0) } halt } ; 315 ends the WHO reply: : End of WHO list if ($code == 315) { set -l %c $lower($replace($get($split($text), 0), ":", "")) set -l %state $get(%avoid_wait, %c) if (%state != wait && %state != left) { return } setat %avoid_wait %c done halt } }