# by Tris, 17jul96 (v2) # action added by fantomas 22Dec1997 # Updated to v4 (17 November 1998) by slennox # About time someone updated this nice little script that more # people should be using :-) # - Updated for 1.3 bots (channel specific +o user no longer kicked) # - Added options to set number of kicks in how many seconds # and kick msg # - Added option to ban as well as kick # # Fixed version (1 December 1998) # - repeatban set to 1 was generating 'invalid command name' error. # I'd forgotten to add 'fixbanmask' proc (stolen from subop*.tcl by # MHT & YaZZ) :-) # # Updated to v4.1 (8 December 1998) # - Got rid of the fixbanmask crap and changed ban type to an IP ban :-) # Updated (25 November 2002) @/+ exempt # - Now this script won't kick opped/voiced users. I added an op/voice exempt to this script # originally made by Tris and modified by users listed above. (|am|) @ DALnet amit@amit.mu # Number of repeats before kicking set repeatkick 4 # In how many seconds set repeattime 4 # Kick msg set repeatmsg "Hayahhh..!!!" # Also ban? set repeatban 0 # How long the ban should last (in minutes) set repeatbantime 0 # Don't edit below unless you know what you're doing bind pubm - * repeat_pubm bind ctcp - ACTION repeat_action bind nick - * repeat_nick proc repeat_pubm {nick uhost hand chan text} { if {[matchattr $nick mo|mo $chan] || [isop $nick $chan] || [matchattr $nick o|o $chan]} {return 0} global repeat_last repeat_num repeatkick repeatmsg repeatban repeatbantime if [info exists repeat_last([set n [string tolower $nick]])] { if {[string compare [string tolower $repeat_last($n)] \ [string tolower $text]] == 0} { if {[incr repeat_num($n)] >= ${repeatkick}} { if {$repeatban} { set banmask "*!*[string range $uhost [string first "@" $uhost] end]" newchanban $chan $banmask repeat $repeatmsg $repeatbantime } putserv "KICK $chan $nick :$repeatmsg" unset repeat_last($n) unset repeat_num($n) } return } } set repeat_num($n) 1 set repeat_last($n) $text } proc repeat_action {nick uhost hand dest keyword text} { if {[matchattr $nick mo|mo $dest] || [isop $nick $dest] || [matchattr $nick o|o $dest]} {return 0} global botnick altnick repeat_last repeat_num repeatkick repeatmsg repeatban repeatbantime if [info exists repeat_last([set n [string tolower $nick]])] { if {[string compare [string tolower $repeat_last($n)] \ [string tolower $text]] == 0} { if {[incr repeat_num($n)] >= ${repeatkick}} { if {$repeatban} { set banmask "*!*[string range $uhost [string first "@" $uhost] end]" newchanban $dest $banmask repeat $repeatmsg $repeatbantime } putserv "KICK $dest $nick :$repeatmsg" unset repeat_last($n) unset repeat_num($n) } return } } set repeat_num($n) 1 set repeat_last($n) $text } proc repeat_nick {nick uhost hand chan newnick} { if {[matchattr $nick mo|mo $chan] || [isop $nick $chan] || [matchattr $nick o|o $chan]} {return 0} global repeat_last repeat_num catch {set repeat_last([set nn [string tolower $newnick]]) \ $repeat_last([set on [string tolower $nick]])} catch {unset repeat_last($on)} catch {set repeat_num($nn) $repeat_num($on)} catch {unset repeat_num($on)} } proc repeat_timr {} { global repeat_last repeattime catch {unset repeat_last} catch {unset repeat_num} utimer $repeattime repeat_timr } if ![regexp repeat_timr [utimers]] { # thanks to jaym utimer $repeattime repeat_timr } putlog "repeat.tcl (@/+ exempt) by |am| originally made by Tris loaded"