This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

switch on/off repeat tcl

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
i
irclove
Voice
Posts: 5
Joined: Thu Dec 09, 2010 3:11 pm

switch on/off repeat tcl

Post by irclove »

hello, I have this tcl, what it does is just ban and not kick
I wish there a switch on / off. thanks for the help
<admin>!repeatban on
<bot> Repeat Ban on
<admin !repeatban off
<bot> Repeat ban off

Code: Select all

# by Tris, 17jul96 (v2)
# action added by fantomas 22Dec1997

# Updated to v4 (17 November 1998) by slennox <slenny@ozemail.com.au>
# About time someone updated this nice little script that more
# people should be using Smile
# - 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) Smile
#
# Updated to v4.1 (8 December 1998)
# - Got rid of the fixbanmask crap and changed ban type to an IP ban Smile

# 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 5
# In how many seconds
set repeattime 22
# Kick msg
set repeatmsg "Stop Flooding"
# Also ban?
set repeatban 1
# How long the ban should last (in minutes)
set repeatbantime 1


# 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] || [isvoice $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]"
					putquick "MODE $chan +b $banmask"
					timer $repeatbantime [list pushmode $chan -b $banmask]
				}
				putserv "BAN $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] || [isvoice $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] || [isvoice $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"
thanks to all those who help without anything in return a thousand thanks
i
irclove
Voice
Posts: 5
Joined: Thu Dec 09, 2010 3:11 pm

Post by irclove »

I did not understand anything he says, not if I have understood Friend, do not like to be the command, in the channel and not via ctcp
User avatar
username
Op
Posts: 196
Joined: Thu Oct 06, 2005 9:20 am
Location: Russian Federation, Podolsk
Contact:

Post by username »

Try to add

Code: Select all

bind pub n !repeatban repeat_set
proc repeat_set {nick uhost hand chan text} {
global lastbind repeatban
switch [lindex [split $text] 0] {
"" {
    putserv "NOTICE $nick :$nick, use $lastbind on/off."
    return 0
    }
"on" {
    set repeatban 1
    putserv "NOTICE $nick :$nick, Repeat Ban turned on."
    }
"off" {
    set repeatban 0
    putserv "NOTICE $nick :$nick, Repeat Ban turned off."
    }
}
}
after

Code: Select all

bind nick - * repeat_nick
Архив TCL скриптов для ботов Eggdrop/Windrop:
http://egghelp.ru/
Post Reply