menu channel {
-
Badchan Checker
.$iif($group(#badchans) == off,$style(2)) $iif($istok(%protchans,#,44),Remove,Add) protection for #:{
if $istok(%protchans,#,44) {
%protchans = $remtok(%protchans,#,1,44)
echo -ac info * Removed # from the list of protected channels
}
else {
%protchans = $addtok(%protchans,#,44)
echo -ac info * Added # to the list of protected channels
}
}
.-
.$iif($group(#badchans) == on,Disable,Enable):{
if $group(#badchans) == on { .disable #badchans | chans_unload }
else { .enable #badchans | chans_load }
}
}
#badchans on
on @*:JOIN:%protchans:{
hinc -mu2 chancheck $+($cid,#)
if $hget(chancheck,$+($cid,#)) < 5 {
hadd chancheck $nick 1
.enable #chancheck
whois $nick
}
}
on *:START: chans_load
on *:EXIT: chans_unload
#badchans end
#chancheck on
raw 318:*:{
if $hget(chancheck,$2) {
haltdef
hdel chancheck $2
if !$hget(chancheck,0).item { .disable #chancheck }
}
}
raw 319:*: if $hget(chancheck,$2) { haltdef | chans_check $2- }
raw *:*: if $hget(chancheck,$2) && $istok(301 307 310 311 312 313 317 320 330,$numeric,32) { haltdef }
#chancheck end
alias chans_noprefix var %a, %b = $regsub($1-,/(?:^|\s)([^#]+)/g,$chr(32),%a) | return %a
alias chans_check {
var %chans = $chans_noprefix($2-), %a = 1
while $gettok(%chans,%a,32) {
if $hfind(chans,$v1,1,W) { chans_comkick $1 | return }
inc %a
}
}
alias chans_comkick {
var %a = $comchan($1,0), %b
while $comchan($1,%a) {
%b = $v1
if $istok(%protchans,%b,44) && $me isop %b && $1 !isop %b {
ban -ku180 %b $1 2 You cannot join while in a banned or offensive room.
}
dec %a
}
}
alias chans_load {
if !$isfile(chans.txt) {
echo -asc info * Could not find chans.txt. Creating new file...Done.
write chans.txt
}
hmake chans
hload chans chans.txt
echo -ac info Bad channel kicker loaded.
}
alias chans_unload {
chans_save
if $hget(chancheck) { hfree chancheck }
hfree chans
echo -ac info Bad channel kicker unloaded.
}
alias chans_save hsave -o chans chans.txt
alias chans_add {
hadd chans $$1 1
chans_save
echo -ac info * Added $1 to list of bad channels
}
alias chans_rem {
hdel chans $$1
chans_save
echo -ac info * Deleted $1 from list of bad channels
}
alias chans_list {
var %a = 1
echo -asc info ### Listing bad channels ###
while $hget(chans,%a).item {
echo -as * $v1
inc %a
}
}