the question wasnt if the script restricted anything the request was to modify it to make it detect nicks longer than 20 char in it and than place ban / kick
# NEW Nick-Too-Long setting #
# 0 = do not ban nicks as too long #
# 10+ = ban any nick this long or longer #
set blong 0
set bnick {
"bad"
"words"
"one"
"to"
"each"
"line"
}
# set this to "" or "#channel" or "#chan #chan2 #nother"
set bchan ""
## End of Settings ##
bind join - * join:checkbadnick
bind nick - * nick:tvrsh
set bchan [split [string trim [string tolower $bchan]]]
proc nick:tvrsh {nick uhost hand chan newnick} {
join:checkbadnick $newnick $uhost $hand $chan
}
proc join:checkbadnick {nick uhost hand chan} {
global bnick bchan kickreason blong
set bad 0
if {($blong > 9) && ([string length $nick] >= $blong)} { set bad 1
putquick "MODE $chan +b *!*@[lindex [split $uhost @] 1]"
} elseif {([lsearch -exact $bchan [string tolower $chan]] != -1) || ($bchan == "")} {
foreach i [string tolower $bnick] {
if {[string match *$i* [string tolower $nick]]} {
set badpart $i
set bad 2 ; break
}
}
if {$bad == 2} {
putquick "MODE $chan +b *$badpart*!*@*"
}
}
if {$bad > 0} {
putquick "KICK $chan $nick :$kickreason"
}
}
fixed an issue where nick-length bans were ignoring the bchan setting.
cleaned up a little.
added the reason setting.
both scan modes now set proper nick bans.
# 1) Ban nicks for containing any of these words. #
set bnick {
"bad"
"words"
"one"
"to"
"each"
"line"
}
# 2) Ban nicks for being very long?? #
# 0 = do not ban nicks as too long #
# 10+ = ban any nick this long or longer #
set blong 0
# Set this to "" (= all channels) or "#channel" or "#chan #chan2 #nother"
set bchan ""
# Set the reason for the kick/ban. #
set kickreason "BadNick: Change your nick and re-join."
## End of Settings ##
bind join - * join:checkbadnick
bind nick - * nick:tvrsh
set bchan [split [string trim [string tolower $bchan]]]
proc nick:tvrsh {nick uhost hand chan newnick} {
join:checkbadnick $newnick $uhost $hand $chan
}
proc join:checkbadnick {nick uhost hand chan} {
global bnick bchan kickreason blong
if {($bchan ne "") && ([lsearch -exact $bchan [string tolower $chan]] == -1)} {
return 0
}
set bad 0
if {($blong > 9) && ([string length $nick] >= $blong)} { set bad 1
#putquick "MODE $chan +b *!*@[lindex [split $uhost @] 1]"
putquick "MODE $chan +b $nick!*@*"
} else {
foreach i [string tolower $bnick] {
if {[string match *$i* [string tolower $nick]]} {
putquick "MODE $chan +b *$i*!*@*"
#putquick "MODE $chan +b $nick!*@*"
set bad 2 ; break
}
}
}
if {$bad > 0} {
putquick "KICK $chan $nick :$kickreason"
}
}