I use something like this
- It excludes Ops & Voiced
- %SP_Punish
- 1 = kick
- 2 = first kick, and 2nd time ban + kick
- 3 = ban + kick all the time
You need to change
<SPAM TIME HERE> into something like 4
and
<NR OF LINES HERE>) into something like 3
That's an anti-spam script.
alias spam-decrease {
var %temp = %spam. [ $+ [ $1 ] ]
if !%temp { goto end }
var %nl = $calc( %temp -1)
if (%nl <= 0) { unset %spam. [ $+ [ $1 ] ] | goto end }
set %spam. $+ $1 %nl
:end
}
on *:TEXT:*:#: {
if ($nick isop $chan) { goto end }
if ($nick isvoice $chan) { goto end }
;### SPAM Protect
if (%spam. [ $+ [ $address ] ]) { inc %spam. $+ $address 1 }
if !%spam. [ $+ [ $address ] ] { set %spam. $+ $address 1 }
.timer 1 <SPAM TIME HERE> spam-decrease $address
if (%spam. [ $+ [ $address ] ] >= <NR OF LINES HERE>) {
if (%SP_punish == 1) {
kick $chan $nick Stop spamming
unset %spam. [ $+ [ $address ] ]
}
if (%SP_Punish == 3) {
mode $chan +b $address($nick,2)
kick $chan $nick Stop spamming
.timer 1 600 mode # -b $address($nick,2)
unset %spam. [ $+ [ $address ] ]
}
if (%SP_Punish == 2) {
if ($address isin %kick.spam) {
mode $chan +b $address($nick,2)
kick $chan $nick Stop spamming
.timer 1 600 mode # -b $address
set %kick.spam $replace(%kick.spam,$address,)
unset %spam. [ $+ [ $address ] ]
}
else {
kick $chan $nick Stop spamming
set %kick.spam %kick.spam $address
unset %spam. [ $+ [ $address ] ]
}
}
}
:end
}
--
If you don't want someone in your channel who says a channel within 1min:
on *:JOIN:#: {
set %joined. $+ $adress 1
.timer 1 60 unset %joined. [ $+ [ $address ] ]
}
on *:TEXT:*:#: {
if ($chr(35) isin $1-) {
if %joined. [ $+ [ $address ] ] {
mode # +b $adress($nick,2)
kick # $nick (No advertising)
}
}
}