on @$*:text:/http\x3A\/\//iS:#:{
if ($nick isop #) return
inc $+(%,warn,.,$nick)
if ($($+(%,warn.,$nick),2) > 1) {
mode # +b $wildsite
kick # $nick ban message $v1
}
else {
kick # $nick this is a warning
}
}
I'm not sure what you were doing with the #filterban so I didn't include it. You can put it back in where you want.
Explanations:
You had: ($me isop chan), I have prefixed the event with @ so the event only fires if you are op on the channel.
You had: (http:// isin $1-), I moved this to a regex in the event definition with a $ prefix. /http\x3A\/\// is the pattern which matches http://
You had: (%warn $+ $nick == 1), when referencing dynamically named variables you need to evaluate it after you've composed the name. You can do this with $() or [ ]. $($+(%,warn.,$nick),2) - evaluated one time the text %warn.bob (for example) is returned. Evaluted 2 times, the value of %warn.bob is returned.
A simple if/else is better suited than your goto and halts, so I did a bit of restructuring.
if ($nick isop #) return - this will prevent you from kicking other ops in the channel
The . prefix has no affect on /mode and /kick
$v1 in the kick message is the result from the last if statement, here it will display how many times the user has been kicked by this script