i've made this small tcl to u try it
Code ( any bug report it to me

)
i think it works ... not guaranteed
# your chan(s) if chan > 1 => "#Chan1 #Chan2" ...
set chanz "your-chan"
# kickops ? [1=yes/0=no]
set kickops "0"
# kick voices ? [1=yes/0=no]
set kickvoices "0"
# no kick flags
set nokickflags "f|f"
# set ban time
set bantimez 30
# badwords list
set notallowed {
"*#*"
"*www*"
"*http://*"
}
# kick reason
set kickreason "no spam allowed here ... go play outside"
bind pubm - * pubm:notallowed
bind ctcp - ACTION ctcp:notallowed
proc pubm:notallowed {nick uhost hand chan arg} {
global botnick chanz bantimez notallowed kickreason
global kickops kickvoices nokickflags bantimez
if {(([lsearch -exact [string tolower $chanz] [string tolower $chan]] != -1) || ($chanz == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
foreach bword [string tolower $notallowed] {
if {[string match $bword [string tolower $arg]]} {
if {!$kickops} {if {[isop $nick $chan]} {return 0}}
if {!$kickvoices} {if {[isvoice $nick $chan]} {return 0}}
if {([info exists nokickflags]) && ($nokickflags != "")} {
if {([lindex [split $nokickflags |] 1] == "")} {
if {[matchattr $hand $nokickflags]} {return 0}} {
if {[matchattr $hand $nokickflags $chan]} {return 0}}
}
set why "Spam"
set creator "noSpamz.tcl"
set banz "*!*$uhost"
newchanban $chan $banz $creator $why $bantimez
putquick "mode $chan +b $banz"
putquick "kick $chan $nick : $kickreason"
dccbroadcast "02noSpamz02: banned $nick from $chan"
}
}
}
}
proc ctcp:notallowed {nick uhost hand chan keyword arg} {
pubm:notallowed $nick $uhost $hand $chan $arg
}
putlog "noSpamz.tcl by KID @ IRC.PTnet.org - 02Loaded02"