|
@@ -0,0 +1,172 @@
|
|
|
|
|
+#########################################################################
|
|
|
|
|
+## BlackTools - The Ultimate Channel Control Script ##
|
|
|
|
|
+## One TCL. One smart Eggdrop ##
|
|
|
|
|
+#########################################################################
|
|
|
|
|
+########################### BADNICK TCL #############################
|
|
|
|
|
+#########################################################################
|
|
|
|
|
+## ##
|
|
|
|
|
+## BlackTools : http://blacktools.tclscripts.net ##
|
|
|
|
|
+## Bugs report : http://www.tclscripts.net/ ##
|
|
|
|
|
+## GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
|
|
|
|
|
+## Online Help : irc://irc.undernet.org/tcl-help ##
|
|
|
|
|
+## #TCL-HELP / UnderNet ##
|
|
|
|
|
+## You can ask in english or romanian ##
|
|
|
|
|
+## ##
|
|
|
|
|
+#########################################################################
|
|
|
|
|
+
|
|
|
|
|
+proc badnick:protect:join {nick host hand chan} {
|
|
|
|
|
+global black botnick
|
|
|
|
|
+ set found_nick ""
|
|
|
|
|
+if {![validchan $chan]} { return }
|
|
|
|
|
+ set chan1 $chan
|
|
|
|
|
+if {[setting:get $chan badnick]} {
|
|
|
|
|
+if {![botisop $chan] && ![setting:get $chan xonly]} { return }
|
|
|
|
|
+ set bl_protect [blacktools:protect $nick $chan]
|
|
|
|
|
+if {$bl_protect == "1"} { return }
|
|
|
|
|
+if {[matchattr $hand $black(exceptflags) $chan]} { return }
|
|
|
|
|
+ set getnick [check:except $nick $chan $black(badnickwords) $black(badnickexcept) "BADNICK"]
|
|
|
|
|
+ set check_word [check:file:word $chan $getnick "BADNICK"]
|
|
|
|
|
+if {$check_word != "0"} {
|
|
|
|
|
+ set found_nick $check_word
|
|
|
|
|
+} else {
|
|
|
|
|
+foreach badnick [string tolower $black(badnickwords)] {
|
|
|
|
|
+if {[string match -nocase $badnick $getnick]} {
|
|
|
|
|
+ set found_nick $badnick
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+if {$found_nick != ""} {
|
|
|
|
|
+ set getlang [string tolower [setting:get $chan lang]]
|
|
|
|
|
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
|
|
|
|
|
+if {[setting:get $chan badnick-bmethod] == ""} {
|
|
|
|
|
+ set bmethod $black(badnbanmethod)
|
|
|
|
|
+} else { set bmethod [setting:get $chan badnick-bmethod] }
|
|
|
|
|
+
|
|
|
|
|
+if {$bmethod == "2"} {
|
|
|
|
|
+ blacktools:banner:2 $nick "BADNICK:$found_nick" $chan $chan1 $host "0"
|
|
|
|
|
+if {[link:status $chan] == "1"} {
|
|
|
|
|
+ foreach c [link:chan:get $chan] {
|
|
|
|
|
+ blacktools:banner:2 $nick "BADNICK:$found_nick" $c $c $host "1"
|
|
|
|
|
+ }
|
|
|
|
|
+ blacktools:link_ban2 [link:get] 0
|
|
|
|
|
+ } else { who:chan $chan }
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ foreach tmr [utimers] {
|
|
|
|
|
+if {[string match "*badnick:check:again $nick $chan*" [join [lindex $tmr 1]]]} {
|
|
|
|
|
+ killutimer [lindex $tmr 2]
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+if {[setting:get $chan badnick-banwait] == ""} {
|
|
|
|
|
+ set wait_time $black(badnbanwait)
|
|
|
|
|
+ utimer $black(badnbanwait) [list badnick:check:again $nick $chan $host]
|
|
|
|
|
+} else {
|
|
|
|
|
+ set wait_time [setting:get $chan badnick-banwait]
|
|
|
|
|
+ utimer $wait_time [list badnick:check:again $nick $chan $host]
|
|
|
|
|
+}
|
|
|
|
|
+ set text [black:color:set "" $black(say.$getlang.badnick.10)]
|
|
|
|
|
+ set reply [join $text]
|
|
|
|
|
+ set replace(%time%) $wait_time
|
|
|
|
|
+ set message [string map [array get replace] $reply]
|
|
|
|
|
+ putquick "PRIVMSG $nick :\[$chan\] $message"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+proc badnick:check:again {nick chan host} {
|
|
|
|
|
+ global black
|
|
|
|
|
+if {[onchan $nick $chan]} {
|
|
|
|
|
+ blacktools:banner:2 $nick "BADNICK:$nick" $chan $chan $host "0"
|
|
|
|
|
+if {[link:status $chan] == "1"} {
|
|
|
|
|
+ foreach c [link:chan:get $chan] {
|
|
|
|
|
+ blacktools:banner:2 $nick "BADNICK:$nick" $c $c $host "1"
|
|
|
|
|
+ }
|
|
|
|
|
+ blacktools:link_ban2 [link:get] 0
|
|
|
|
|
+ } else { who:chan $chan }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+proc badnick:protect:change {nick host hand chan newnick} {
|
|
|
|
|
+global black botnick
|
|
|
|
|
+ set handle [nick2hand $nick]
|
|
|
|
|
+ set found_nick ""
|
|
|
|
|
+if {![validchan $chan]} { return }
|
|
|
|
|
+if {[setting:get $chan badnick]} {
|
|
|
|
|
+ set chan1 $chan
|
|
|
|
|
+if {![botisop $chan] && ![setting:get $chan xonly]} { return }
|
|
|
|
|
+if {[matchattr $handle $black(exceptflags) $chan]} { return }
|
|
|
|
|
+ set bl_protect [blacktools:protect $nick $chan]
|
|
|
|
|
+if {$bl_protect == "1"} { return }
|
|
|
|
|
+ set newnick [check:except $newnick $chan $black(badnickwords) $black(badnickexcept) "BADNICK"]
|
|
|
|
|
+ set check_word [check:file:word $chan $newnick "BADNICK"]
|
|
|
|
|
+if {$check_word != "0"} {
|
|
|
|
|
+ set found_nick $check_word
|
|
|
|
|
+}
|
|
|
|
|
+foreach badnick [string tolower $black(badnickwords)] {
|
|
|
|
|
+if {[string match $badnick [string tolower $newnick]]} {
|
|
|
|
|
+ set found_nick $badnick
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+if {$found_nick != ""} {
|
|
|
|
|
+ set getlang [string tolower [setting:get $chan lang]]
|
|
|
|
|
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
|
|
|
|
|
+if {[setting:get $chan badnick-bmethod] == ""} {
|
|
|
|
|
+ set bmethod $black(badnbanmethod)
|
|
|
|
|
+} else { set bmethod [setting:get $chan badnick-bmethod] }
|
|
|
|
|
+
|
|
|
|
|
+if {$bmethod == "2"} {
|
|
|
|
|
+ blacktools:banner:2 $newnick "BADNICK:$found_nick" $chan $chan $host "0"
|
|
|
|
|
+if {[link:status $chan] == "1"} {
|
|
|
|
|
+ foreach c [link:chan:get $chan] {
|
|
|
|
|
+ blacktools:banner:2 $newnick "BADNICK:$found_nick" $c $c $host "1"
|
|
|
|
|
+ }
|
|
|
|
|
+ blacktools:link_ban2 [link:get] 0
|
|
|
|
|
+ } else { who:chan $chan }
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+foreach tmr [utimers] {
|
|
|
|
|
+if {[string match "*badnick:check:again $newnick $chan*" [join [lindex $tmr 1]]]} {
|
|
|
|
|
+ killutimer [lindex $tmr 2]
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+if {[setting:get $chan badnick-banwait] == ""} {
|
|
|
|
|
+ set wait_time $black(badnbanwait)
|
|
|
|
|
+ utimer $black(badnbanwait) [list badnick:check:again $newnick $chan $host]
|
|
|
|
|
+} else {
|
|
|
|
|
+ set wait_time [setting:get $chan badnick-banwait]
|
|
|
|
|
+ utimer $wait_time [list badnick:check:again $newnick $chan $host]
|
|
|
|
|
+}
|
|
|
|
|
+ set text [black:color:set "" $black(say.$getlang.badnick.10)]
|
|
|
|
|
+ set reply [join $text]
|
|
|
|
|
+ set replace(%time%) $wait_time
|
|
|
|
|
+ set message [string map [array get replace] $reply]
|
|
|
|
|
+ putquick "PRIVMSG $newnick :\[$chan\] $message"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+proc badnick:module {nick host hand chan arg} {
|
|
|
|
|
+ global black lastbind
|
|
|
|
|
+ set type 0
|
|
|
|
|
+ set chan1 "$chan"
|
|
|
|
|
+ set why [lindex [split $arg] 0]
|
|
|
|
|
+ set badn [join [lrange [split $arg] 1 end]]
|
|
|
|
|
+ set number [lindex [split $arg] 1]
|
|
|
|
|
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
|
|
|
|
|
+ set chan "$why"
|
|
|
|
|
+ set why [lindex [split $arg] 1]
|
|
|
|
|
+ set badn [join [lrange [split $arg] 2 end]]
|
|
|
|
|
+ set number [lindex [split $arg] 2]
|
|
|
|
|
+}
|
|
|
|
|
+ set return [blacktools:mychar $lastbind $hand]
|
|
|
|
|
+if {$return == "0"} {
|
|
|
|
|
+ return
|
|
|
|
|
+}
|
|
|
|
|
+ prot:module:process $nick $host $hand $chan $chan1 $why $badn $type $number "badnick"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+##############
|
|
|
|
|
+#########################################################################
|
|
|
|
|
+## END ##
|
|
|
|
|
+#########################################################################
|