why make it so lengthy? this is simpler:
on $@*:TEXT:((!)(join|part|(un)?ban|(de)?admin|\S+)):#:{
if ($regml(3) == (join|part)) {
$regml(3) $2
}
elseif ($regml(3) == ban) {
.raw -q mode # +b $address($2,2)
}
elseif ($regml(3) == unban) {
.raw -q mode # -b $address($2,2)
}
elseif ($regml(3) == deadmin) {
.cs deprotect # $2
}
elseif ($regml(3) == admin) {
.cs protect # $2
}
else {
.cs $regml(3) # $2
}