tcl
# all v1
# caline
# par caline
# 14/11/2007
#####################################################################
## Configuration du Script ##########################################
#####################################################################
# Anti flood sur les commandes du Bot x:y (x=nombre de fois, y=secondes) :
set all(flood) 5:10
# Ignorer l'utilisateur après son flood (0=non, 1=oui) :
set all(ignore) 0
# Si oui, combien de temps (en minutes) :
set all(ignoretime) 0
# Laisser faire les utilisateurs ayant certains flags :
set all(ignflags) "fmnov|fmnov"
## Réponses aux !all ##############################################
#####################################################################
# Channels où le bot répondra :
set all(chans) "#irc-pacifique"
set all(msgs) {
var %i = 1, %z = 1, %t = $ceil($calc($nick($chan,0)/150))
while (%i <= %t) { unset %a
var %u = 1 | while (%u <= $iif(%i = %t, $calc($nick($chan,0)-((%t -1)*40)), 40)) {
set %a $instok(%a,$nick($chan,%z),0,46)
inc %u | inc %z
}
puthelp "PRIVMSG $channel :[Reveillez-Vous $replace(%a,$chr(46),$chr(32)) | msg $chan On se BouGe suR $chan Bande de Roupilleurs !!! | inc %i]"
}
}
proc all:pub {nick uhost hand channel arg} {
global all all botnick
if ![matchattr $nick $all(ignflags) $channel] {
if {[all:flood $nick $uhost]} {
return 0
}
}
if {(([lsearch -exact [string tolower $all(chans)] [string tolower $channel]] != -1) || ($all(chans) == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
if ![string length $arg] {
puthelp "PRIVMSG $channel :[lindex $all(msgs) [rand [llength $all(msgs)]]] $nick"
return 1
}
}
}
#####################################################################
#####################################################################
#####################################################################
proc all:flood:init {} {
global all allflood
set all(floodnum) [lindex [split $all(flood) :] 0]
set all(floodtime) [lindex [split $all(flood) :] 1]
set i [expr $all(floodnum) - 1]
while {$i >= 0} {
set allflood($i) 0
incr i -1
}
}
all:flood:init
proc all:flood {nick uhost} {
global all allflood botnick
if {$all(floodnum) == 0} {
return 0
}
set i [expr $all(floodnum) - 1]
while {$i >= 1} {
set allflood($i) $allflood([expr $i - 1])
incr i -1
}
set allflood(0) [unixtime]
if {[expr [unixtime] - $allflood([expr $all(floodnum) - 1])] <= $all(floodtime)} {
if {$all(ignore)} {
allignore [join [maskhost *!*[string trimleft $uhost ~]]] $botnick "Flood" $all(ignoretime)
}
return 1
} {
return 0
}
}
putlog "Auteur inconnu actuellement"