;written by banjirian@ni3
;mybanjirian@yahoo.com
---
ON *:TEXT:*:#: { .signal -n goto.protect # $nick $1- }
ON *:NOTICE:*:#: { .signal -n goto.protect # $nick $1- }
ON *:ACTION:*:#: { .signal -n goto.protect # $nick $1- }
ON *:NICK:*:#: { .signal -n goto.nick # $nick $1- }
ON *:JOIN:*:#: { .signal -n goto.join # $nick $1- }
ON *:SIGNAL:*: {
if ($signal == goto.protect) {
if (%banjirian.a == ON) {
if ($2 == $me) return
if ($me !isop $1) return
if ($2 !isreg #) return
var %banjirian.b = .signal -n d $1-2
var %banjirian.c = /[[:cntrl:]]/g
var %banjirian.d = /[[:upper:]]/g
var %banjirian.e = /[[:digit:]]/g
var %banjirian.f = /[[:punct:]]/g
var %banjirian.g = /[€-篏/g
var %banjirian.h = /\b([censored]|suck|babi|puki|bitch|dick)\b/Si
var %banjirian.i = /(http|\.com|\cjb.net|\.net|\.org|\.php|\.html)/Si
.hinc -u5m ilines $+($1,$2) 1
.hinc -u5m irepeat $+($2,@,$1,@,$hash($remove($3-,$chr(160),$chr(32)),32)) 1
if ($regex($3-,%banjirian.c) => %max.c) %banjirian.b %banjirian.c.reason
if ($regex($3-,%banjirian.d) => %max.d) %banjirian.b %banjirian.d.reason
if ($regex($3-,%banjirian.e) => %max.e) %banjirian.b %banjirian.e.reason
if ($regex($3-,%t.symbol) => %max.f) %banjirian.b %banjirian.f.reason
if ($len($3-) => %max.u) %banjirian.b %banjirian.u.reason
if ($regex($3-,%banjirian.g) => %max.g) %banjirian.b %banjirian.g.reason
if ($count($3-,$chr(160)) => %max.x) %banjirian.b %banjirian.x.reason
if ($regex($3-,%banjirian.h)) %banjirian.b %banjirian.h.reason
if ($regex($3-,%banjirian.i)) %banjirian.b %banjirian.i.reason
if ($hget(i.lines,$+($1,$2)) => %max.w) %banjirian.b %banjirian.w.reason
if ($hget(i.repeat,$+($2,@,$1,@,$hash($remove($3-,$chr(160),$chr(32)),32)) => %max.v) %banjirian.b %banjirian.v.reason
}
}
if ($signal == goto.join) {
if (%banjirian.j ON) {
var %banjirian.b = .signal -n d $1-2
if ($2 == $me) return
if ($me !isop $1) return
if ($2 !isreg #) return
var %banjirian.k = $address($2,2)
hinc -u10 i.join massjoin
if ($hget(i.join,massjoin) => %banjirian.l) { %banjirian.b %banjirian.l.reason }
hinc -u10 i.join $+(join.,$nick)
if ($hget(i.join,$+(join.,$nick)) => %banjirian.m) { %banjirian.b %banjirian.m.reason }
hinc -u10 i.join $+(max.,%banjirian.k)
if ($hget(i.join,$+(max.,%banjirian.k)) => %banjirian.s) { %banjirian.b %banjirian.s.reason }
if ($len($nick) => %banjirian.n) { %banjirian.b %banjirian.n.reason }
}
}
if ($signal == goto.nick) {
if (%banjirian.t == ON) {
var %banjirian.b = .signal -n goto.kick2 $1-2
if ($2 == $me) return
if ($newnick == $me) return
if ($me !isop $1) return
if ($newnick !isreg #) return
if ($newnick == $me) return
hinc -u5 i.nick nick.change
if ($hget(i.nick,nick.change) => %banjirian.o) { %banjirian.b %banjirian.o.reason }
var %banjirian.k = $address($newnick,2)
hinc -u10 i.nick $+(nick.,%banjirian.k)
if ($hget(i.nick,$+(nick.,%banjirian.k)) => %banjirian.p) { %banjirian.b %banjirian.p.reason }
if ($len($newnick) => %banjirian.q) { %banjirian.b %banjirian.q.reason }
}
}
if ($signal == goto.kick) {
if ($2 ison $1) {
.hinc -u15m d y
if ($hget(d,y) <= %banjirian.r) { !kick $1 $2 $3 }
var %banjirian.k = $address($2,%ban.level)
.mode $chan +b %banjirian.k
}
}
if ($signal == goto.kick2) {
if ($newnick ison $1) {
.hinc -u15m d x
if ($hget(d,x) <= %banjirian.r) { !kick $1 $newnick $3 }
var %banjirian.k = $address($newnick,%ban.level)
.mode $chan +b %banjirian.k
}
}
}
menu * {
Setup
.kick limit:set %banjirian.r $$?=
.ban level (1-9):.set %ban.level $$?=
.ON TEXT/NOTICE/ACTION
..disable all:set %banjirian.a OFF
..enable all:set %banjirian.a ON
..max codes:set %max.c $$?=
..max capslock:set %max.d $$?=
..max number:set %max.e $$?=
..max symbol:set %max.f $$?=
..max longtext:set %max.u $$?=
..max ascii:set %max.g $$?=
..max blank:set %max.x $$?=
..max repeat:set %max.v $$?=
..max lines:set %max.w $$?=
..reason
..codes:set %banjirian.c.reason $$?=
..capslock:set %banjirian.d.reason $$?=
..number:set %banjirian.e.reason $$?=
..symbol:set %banjirian.f.reason $$?=
..lenght:set %banjirian.u.reason $$?=
..ascii:set %banjirian.g.reason $$?=
..blank:set %banjirian.x.reason $$?=
..badword:set %banjirian.h.reason $$?=
..advertise:set %banjirian.i.reason $$?=
..repeat:set %banjirian.w.reason $$?=
..lines:set %banjirian.v.reason $$?=
.ON JOIN
..disable all:set %banjirian.j OFF
..enable all:set %banjirian.j ON
..max join in 10secs:set %banjirian.l $$?=
..max join / address in 10secs:set %banjirian.s $$?=
..max join / nick in 10secs:set %banjirian.m $$?=
..max nick lenght:set %banjirian.n $$?=
..reason
..mass join in 10secs:set %banjirian.l.reason $$?=
..mass join / address in 10secs:set %banjirian.s.reason $$?=
..mass join / nick in 10secs:set %banjirian.m.reason $$?=
..nick lenght:set %banjirian.n.reason $$?=
.ON NICK
..disable all:set %banjirian.t OFF
..enable all:set %banjirian.t ON
..max nick change:set %banjirian.o $$?=
..max nick change / address:set %banjirian.p $$?=
..max nick lenght:set %banjirian.q $$?=
..reason
..mass nick change:set %banjirian.o.reason $$?=
..mass nick change / address:set %banjirian.p.reason $$?=
..nick lenght:set %banjirian.q.reason $$?=
}