bind join -|- * proc_nickspam
bind nick - * proc_nickspamchange
#set msgkickbadnickspam "1(4©1)RnB.x Uses really nick!"
set msgkickbadnickspam "1Out!"
set konsonan "bcdfghjklmnpqrstvwxz"
set tempkonsonan ""
set arg ""
###### start test_vocal #####
proc test_vocal {} {
global konsonan tempkonsonan arg
 foreach i [string tolower [split $arg ""]] {
  if {[string match *$i* $konsonan]} {
   set tempkonsonan "konsonan"
  } else {
   set tempkonsonan "vocal"
  }
 }
 return 1
}

#### end test_vocal ####

#### start proc_nickspam ####
proc proc_nickspam { nick uhost hand channel } {
global msgkickbadnickspam tempkonsonan arg botnick
if {[isop $botnick $channel]!=1} {return 0}

set nick [string tolower $nick]
if {([string length $nick] < 5) || ([matchattr $hand b]) || ([matchattr $hand f]) || ([isop $botnick $channel]!=1) || ([isop $nick $channel]==1)} {return 1}
### length nick di atas 4 ###
set nick1 [string range $nick 0 0]
set nick2 [string range $nick 1 1]
set nick3 [string range $nick 2 2]
set nick4 [string range $nick 3 3]

set uu "^`"
if {[string match *$nick1* $uu]} {return 1}
set u "_"
if {[string match "*$u*" $nick]} {return 1}
set u "-"
if {[string match "*$u*" $nick]} {return 1}
set u "`"
if {[string match "*$u*" $nick]} {return 1}
set u "\["
if {[string match "*$u*" $nick]} {return 1}
set u "\]"
if {[string match "*$u*" $nick]} {return 1}

set arg $nick1
test_vocal
set vnick1 "$tempkonsonan"

set arg $nick2
test_vocal
set vnick2 "$tempkonsonan"

set arg $nick3
test_vocal
set vnick3 "$tempkonsonan"

set arg $nick4
test_vocal
set vnick4 "$tempkonsonan"

  if { ($vnick1=="konsonan") && ($vnick2=="konsonan") && ($vnick3=="konsonan") && ($vnick4=="konsonan")} {
        putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
#	putlog "kickban $nick in $channel : nick spam detected. (1.$vnick1 ($nick1) 2.$vnick2 ($nick2) 3.$vnick3 ($nick3) 4.$vnick4 ($nick4))"
	return 0
  }
  
  if {[string length $nick] > 6} {
   set nick5 [string range $nick 4 4]
   set nick6 [string range $nick 5 5]
   set nick7 [string range $nick 6 6]
   
   set tempkonsonan ""   
   set arg $nick5
   test_vocal
   set vnick5 "$tempkonsonan"

   set arg $nick6
   test_vocal
   set vnick6 "$tempkonsonan"

   set arg $nick7
   test_vocal
   set vnick7 "$tempkonsonan"

   if {($vnick1=="konsonan") && ($vnick2=="konsonan") && ($vnick3=="konsonan") && ($vnick5=="konsonan")&& ($vnick6=="konsonan")&& ($vnick7=="konsonan")&& ($vnick4=="vocal")} {
	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putlog "kick ban $nick in $channel : nick spam detected. (2.$vnick2 ($nick2) 3.$vnick3 ($nick3) 4.$vnick4 ($nick4) 5.$vnick5 ($nick5))"
	return 0
    }

   if {($vnick2=="konsonan") && ($vnick3=="konsonan") && ($vnick4=="konsonan") && ($vnick5=="konsonan")} {
	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putlog "kick ban $nick in $channel : nick spam detected. (2.$vnick2 ($nick2) 3.$vnick3 ($nick3) 4.$vnick4 ($nick4) 5.$vnick5 ($nick5))"
	return 0
    }
   if {($vnick3=="konsonan") && ($vnick4=="konsonan") && ($vnick5=="konsonan") && ($vnick6=="konsonan")} {
	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putlog "kick ban $nick in $channel : nick spam detected. (3.$vnick3 ($nick3) 4.$vnick4 ($nick4) 5.$vnick5 ($nick5) 6.$vnick6 ($nick6))"
	return 0
   }
   if {($vnick4=="konsonan") && ($vnick5=="konsonan") && ($vnick6=="konsonan") && ($vnick7=="konsonan")} {
	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putlog "kick ban $nick in $channel : nick spam detected. (4.$vnick4 ($nick4) 5.$vnick5 ($nick5) 6.$vnick6 ($nick6) 7.$vnick7 ($nick7))"
	return 0
   }
   
   if {$nick1=="g"} {return 1}
   set panjang [string length $nick]
   set m1 [expr $panjang - 1]
   set m2 [expr $panjang - 2]
   set m3 [expr $panjang - 3]
   set nomer "0123456789"
   set nm1 [string range $nick $m1 $m1]
   set nm2 [string range $nick $m2 $m2]
   set nm3 [string range $nick $m3 $m3]
#   putserv "$nm1 $nm2 $nm3 $vnick1 $vnick2 $vnick3"

   if {($vnick1=="konsonan") && ($vnick2=="vocal") && ([string match *$nm1* $nomer]) && ([string match *$nm2* $nomer]) && ([string match *$nm3* $nomer])} {
	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
      	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putlog "kick ban $nick in $channel : nick spam detected. (1.$vnick1 ($nick1) 2.$vnick2 ($nick2) dan belakang : $nm1 $nm2 $nm3"
	return 0
  }
  if {($vnick1=="konsonan") && ($vnick2=="konsonan") && ($vnick3=="vocal") && ([string match *$nm1* $nomer]) && ([string match *$nm2* $nomer]) && ([string match *$nm3* $nomer])} {
	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
      	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putlog "kick ban $nick in $channel : nick spam detected. (1.$vnick1 ($nick1) 2.$vnick2 ($nick2) dan belakang : $nm1 $nm2 $nm3"
	return 0
  }
  
  if {($vnick1=="vocal") && ($vnick2=="konsonan") && ([string match *$nm1* $nomer]) && ([string match *$nm2* $nomer]) && ([string match *$nm3* $nomer])} {
	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
      	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putlog "kick ban $nick in $channel : nick spam detected. (1.$vnick1 ($nick1) 2.$vnick2 ($nick2) dan belakang : $nm1 $nm2 $nm3"
	return 0
  }

   set panjang [string length $nick]
   set m1 [expr $panjang - 1]
   set m2 [expr $panjang - 2]
   set m3 [expr $panjang - 3]

   set arg $m1
   test_vocal
   set nm1 "$tempkonsonan"

   set arg $m2
   test_vocal
   set nm2 "$tempkonsonan"

   set arg $m3
   test_vocal
   set nm3 "$tempkonsonan"

  if {($vnick1=="konsonan") && ($vnick2=="konsonan") && ($vnick3=="konsonan") && ($nm1=="konsonan") && ($nm2=="konsonan") && ($nm3=="konsonan")} {
	putserv "MODE $channel +b *!*@[lindex [split $uhost @] 1]"
      	putserv "KICK $channel $nick :$msgkickbadnickspam"
#	putlog "kick ban $nick in $channel : nick spam detected. (1.$vnick1 ($nick1) 2.$vnick2 ($nick2) dan belakang : $nm1 $nm2 $nm3"
	return 0
  }


  }

}
###### end proc_nickspam  ####

###### start proc_nickspamchange  ####
proc proc_nickspamchange {nick host hand channel nnick} {
    if {[isop $nick $channel]==1} {return 0}
    proc_nickspam $nnick $host $hand $channel
}
putlog "1(4©1)KnL.tcl nick spam detected loaded."

#  if {[string length $arg] > 350} 
#
# foreach i [string tolower [split $arg ""]] {
#  if {[string match *$i* "abcdefghijklmnopqrstuvwxyz"]} {
#   return 1
#  }
# }
# return 0
#}


