; -----------------------------------------------
; Starup
; -----------------------------------------------
on *:START: {
/hmake blist 10
if ($exists(blist.hsh)) /hload blist blist.hsh
}
; -----------------------------------------------
; Cleanup
; -----------------------------------------------
on *:EXIT: {
if ($hget(blist)) /hsave blist blist.hsh
/hfree blist
}
; -----------------------------------------------
; Join
; -----------------------------------------------
on me:1:JOIN:#: {
.timer 1 1 /who $chan
}
on !@*:JOIN:#: {
if ($hfind(blist, $address($nick, 11), 0, w) > 0) {
/kick $chan $nick Banned (B-listed)
/mode $chan +bb $nick $address($nick, 11)
}
}
; -----------------------------------------------
; Menu
; -----------------------------------------------
Menu Nicklist {
Blacklist $1
.$iif($hfind(blist, $address($1, 11), 0, w) > 0, Remove, Add): {
if ($hfind(blist, $address($1, 11), 0, w) > 0) {
var %a = 0
while ($hfind(blist, $address($1, 11), %a, w)) {
/hdel blist $ifmatch
/inc %a
}
/echo -a [B-list] $1 ( $+ $address($1, 5) $+ ) Removed
}
else {
/hadd blist $address($1, 5)
/hsave blist blist.hsh
/kick $chan $1 Banned! (B-listed)
/mode $chan +bb $1 $address($1, 5)
/echo -a [B-list] $1 ( $+ $address($1, 5) $+ ) Added
}
}
}
; -----------------------------------------------
; Raw Reply
; -----------------------------------------------
raw *:*: {
if ($numeric == 352) {
var %chan = $2, %address = $+(*!*,$4), %nick = $6
if ($me isop %chan) {
if (($hfind(blist, %address, 0, w) > 0) && (%nick != $me)) {
/kick %chan %nick Banned! (B-listed)
/mode %chan +bb %nick %address
}
}
}
else if ($numeric == 367) {
var %chan = $2, %address = $3
if (($me isop %chan) && (%address iswm $address($me, 5))) /mode %chan -b %address
}
}