All pastes #1521206 Raw Edit

Unnamed

public text v1 · immutable
#1521206 ·published 2009-08-07 22:36 UTC
rendered paste body
# limit (10/09/2002)								#
#################################################################################
#										#
# Limit.tcl permet de mettre à jour le mode +l sur un channel.			#
#										#
#################################################################################


##### CONFIGURATION #####


### Channels sur lesquels la limite doit etre mise en place (mettre "all" pour tous les channels où le bot est)
### Séparer les channels par un espace
set limit(channel) "#albator #naimphea #Serenity_&_HeLiaS"

### Indiquer ici de combien la limite doit etre augmenté
set limit(plus) 5


##### FIN DE LA CONFIGURATION #####



##### DEBUT DU PROGRAMME #####

bind time - "* * * * *" limit:time:check

proc limit:time:check { min hour day month year } {
	global limit
	set limite_actuelle 0
	foreach chan [channels] {
		if {(($limit(channel) != "all") && ([lsearch -exact $limit(channel) $chan] != -1)) || ($limit(channel) == "all")} {
			if {[string match *l* [lindex [getchanmode $chan] 0]]} {
				if {[string match *k* [lindex [getchanmode $chan] 0]]} {
					set limite_actuelle [lindex [getchanmode $chan] 2]
				} else {
					set limite_actuelle [lindex [getchanmode $chan] 1]
				}
			}
			if {![info exists limit($chan,stop)]} {
				set limit($chan,stop) 0
			}
			set limit($chan,total) [llength [chanlist $chan]]
			if {![info exists limit($chan,total,old)]} {
				set limit($chan,total,old) $limit($chan,total)
			}
			
			# on regarde si y'a pas trop de gens qui sont rentrés sur le channel en 1 minute
			if {![info exists limit($chan,danger)]} {
				set limit($chan,danger) 1
			}
			if {$limit($chan,total) == [expr $limit($chan,total,old) + $limit(plus)]} {
				if {![info exists limit($chan,danger,moment)]} {
					set limit($chan,danger,moment) "$hour:$min"
				}
				if {([lindex [split $limit($chan,danger,moment) :] 0] == $hour) && ([expr [lindex [split $limit($chan,danger,moment) :] 1] + 1] == $min)} {
					# si la limite était pleine il y a une minute deja alors on incremente le danger
					set limit($chan,danger) [expr $limit($chan,danger) + 1]
				}
				
			}
			if {$limit($chan,danger) == 2} {
				putlog "#LIMIT# Je trouve qu'il y a bcp de personne qui ont rejoin $chan ... je n'augmente plus la limite pendant 5 minutes !"
				puthelp "privmsg $chan :#LIMIT# Je trouve qu'il y a bcp de personne qui ont rejoin $chan ... je n'augmente plus la limite pendant 5 minutes !"
				set limit($chan,stop) 4
				set limit($chan,danger) 1
			} else {
				if {$limit($chan,stop) > 0} {
					set limit($chan,stop) [expr $limit($chan,stop) - 1]
				} else {
					if {$limit($chan,danger) < 2} {
						if {$limite_actuelle != [expr $limit($chan,total) + $limit(plus)]} {
							pushmode $chan +l [expr $limit($chan,total) + $limit(plus)]
							set limit($chan,total,old) $limit($chan,total)
						}
					}
				}
			}
		}
	}
	return 0
}


putlog "\0032LIMIT.TCL\003 (\0031310/09/2002\003) par Jarod_"