BT.badnick.tcl 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #########################################################################
  2. ## BlackTools - The Ultimate Channel Control Script ##
  3. ## One TCL. One smart Eggdrop ##
  4. #########################################################################
  5. ########################### BADNICK TCL #############################
  6. #########################################################################
  7. ## ##
  8. ## BlackTools : http://blacktools.tclscripts.net ##
  9. ## Bugs report : http://www.tclscripts.net/ ##
  10. ## GitHub page : https://github.com/tclscripts/BlackToolS-TCL ##
  11. ## Online Help : irc://irc.undernet.org/tcl-help ##
  12. ## #TCL-HELP / UnderNet ##
  13. ## You can ask in english or romanian ##
  14. ## ##
  15. #########################################################################
  16. proc badnick:protect:join {nick host hand chan} {
  17. global black botnick
  18. set found_nick ""
  19. if {![validchan $chan]} { return }
  20. set chan1 $chan
  21. if {[setting:get $chan badnick]} {
  22. if {![botisop $chan] && ![setting:get $chan xonly]} { return }
  23. set bl_protect [blacktools:protect $nick $chan]
  24. if {$bl_protect == "1"} { return }
  25. if {[matchattr $hand $black(exceptflags) $chan]} { return }
  26. set getnick [check:except $nick $chan $black(badnickwords) $black(badnickexcept) "BADNICK"]
  27. set check_word [check:file:word $chan $getnick "BADNICK"]
  28. if {$check_word != ""} {
  29. set found_nick $check_word
  30. }
  31. if {$found_nick != ""} {
  32. set getlang [string tolower [setting:get $chan lang]]
  33. if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
  34. if {[setting:get $chan badnick-bmethod] == ""} {
  35. set bmethod $black(badnbanmethod)
  36. } else { set bmethod [setting:get $chan badnick-bmethod] }
  37. if {$bmethod == "2"} {
  38. blacktools:banner:2 $nick "BADNICK:$found_nick" $chan $chan1 $host "0" ""
  39. if {[link:status $chan] == "1"} {
  40. foreach c [link:chan:get $chan] {
  41. blacktools:banner:2 $nick "BADNICK:$found_nick" $c $c $host "1" ""
  42. }
  43. blacktools:link_ban2 [link:get] 0
  44. } else { who:chan $chan }
  45. return
  46. }
  47. foreach tmr [utimers] {
  48. if {[string match "*badnick:check:again $nick $chan*" [join [lindex $tmr 1]]]} {
  49. killutimer [lindex $tmr 2]
  50. }
  51. }
  52. if {[setting:get $chan badnick-banwait] == ""} {
  53. set wait_time $black(badnbanwait)
  54. utimer $black(badnbanwait) [list badnick:check:again $nick $chan $host]
  55. } else {
  56. set wait_time [setting:get $chan badnick-banwait]
  57. utimer $wait_time [list badnick:check:again $nick $chan $host]
  58. }
  59. set text [black:color:set "" $black(say.$getlang.badnick.10)]
  60. set reply [join $text]
  61. set replace(%time%) $wait_time
  62. set message [string map [array get replace] $reply]
  63. putquick "PRIVMSG $nick :\[$chan\] $message"
  64. }
  65. }
  66. }
  67. proc badnick:check:again {nick chan host} {
  68. global black
  69. if {[onchan $nick $chan]} {
  70. blacktools:banner:2 $nick "BADNICK:$nick" $chan $chan $host "0" ""
  71. if {[link:status $chan] == "1"} {
  72. foreach c [link:chan:get $chan] {
  73. blacktools:banner:2 $nick "BADNICK:$nick" $c $c $host "1" ""
  74. }
  75. blacktools:link_ban2 [link:get] 0
  76. } else { who:chan $chan }
  77. }
  78. }
  79. proc badnick:protect:change {nick host hand chan newnick} {
  80. global black botnick
  81. set handle [nick2hand $nick]
  82. set found_nick ""
  83. if {![validchan $chan]} { return }
  84. if {[setting:get $chan badnick]} {
  85. set chan1 $chan
  86. if {![botisop $chan] && ![setting:get $chan xonly]} { return }
  87. if {[matchattr $handle $black(exceptflags) $chan]} { return }
  88. set bl_protect [blacktools:protect $nick $chan]
  89. if {$bl_protect == "1"} { return }
  90. set newnick [check:except $newnick $chan $black(badnickwords) $black(badnickexcept) "BADNICK"]
  91. set check_word [check:file:word $chan $newnick "BADNICK"]
  92. if {$check_word != ""} {
  93. set found_nick $check_word
  94. }
  95. foreach badnick [string tolower $black(badnickwords)] {
  96. if {[string match $badnick [string tolower $newnick]]} {
  97. set found_nick $badnick
  98. }
  99. }
  100. if {$found_nick != ""} {
  101. set getlang [string tolower [setting:get $chan lang]]
  102. if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
  103. if {[setting:get $chan badnick-bmethod] == ""} {
  104. set bmethod $black(badnbanmethod)
  105. } else { set bmethod [setting:get $chan badnick-bmethod] }
  106. if {$bmethod == "2"} {
  107. blacktools:banner:2 $newnick "BADNICK:$found_nick" $chan $chan $host "0" ""
  108. if {[link:status $chan] == "1"} {
  109. foreach c [link:chan:get $chan] {
  110. blacktools:banner:2 $newnick "BADNICK:$found_nick" $c $c $host "1" ""
  111. }
  112. blacktools:link_ban2 [link:get] 0
  113. } else { who:chan $chan }
  114. return
  115. }
  116. foreach tmr [utimers] {
  117. if {[string match "*badnick:check:again $newnick $chan*" [join [lindex $tmr 1]]]} {
  118. killutimer [lindex $tmr 2]
  119. }
  120. }
  121. if {[setting:get $chan badnick-banwait] == ""} {
  122. set wait_time $black(badnbanwait)
  123. utimer $black(badnbanwait) [list badnick:check:again $newnick $chan $host]
  124. } else {
  125. set wait_time [setting:get $chan badnick-banwait]
  126. utimer $wait_time [list badnick:check:again $newnick $chan $host]
  127. }
  128. set text [black:color:set "" $black(say.$getlang.badnick.10)]
  129. set reply [join $text]
  130. set replace(%time%) $wait_time
  131. set message [string map [array get replace] $reply]
  132. putquick "PRIVMSG $newnick :\[$chan\] $message"
  133. }
  134. }
  135. }
  136. proc badnick:module {nick host hand chan arg} {
  137. global black lastbind
  138. set type 0
  139. set chan1 "$chan"
  140. set why [lindex [split $arg] 0]
  141. set badn [join [lrange [split $arg] 1 end]]
  142. set number [lindex [split $arg] 1]
  143. if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
  144. set chan "$why"
  145. set why [lindex [split $arg] 1]
  146. set badn [join [lrange [split $arg] 2 end]]
  147. set number [lindex [split $arg] 2]
  148. }
  149. set return [blacktools:mychar $lastbind $hand]
  150. if {$return == "0"} {
  151. return
  152. }
  153. prot:module:process $nick $host $hand $chan $chan1 $why $badn $type $number "badnick"
  154. }
  155. ##############
  156. #########################################################################
  157. ## END ##
  158. #########################################################################