11/11/2011, 11:12
C'est marrant comme vous faites ça, moi j'aurais cherché plus simple:
tcl
namespace eval av {
variable salons "#salon1 #salon2 #salon3"
variable time 15
variable lignes 5
variable idle
bind time - "* * * * *" av::unvoice
bind pubm - * av::voice
bind nick - * av::chgn
proc unvoice {min hour day month year} {
foreach chan [string tolower $::av::salons] {
if {![validchan $chan]} continue
foreach nick [chanlist $chan] {
if {[isbotnick $nick] || [isop $nick $chan] || ![isvoice $nick $chan]} continue
if {[getchanidle $nick $chan] >= $time} {
dict set ::av::idle($chan) $nick 0
pushmode $chan -v $nick
}
}
flushmode $chan
}
}
proc voice {nick uhost handle chan args} {
set chan [string tolower $chan]
if {[lsearch -nocase $::av::salons $chan]==-1 || [isbotnick $nick] || [isop $nick $chan]} return
if {[info exists ::av::idle($chan)] && [dict exists $::av::idle($chan) $nick]} {
set i [dict get $::av::idle($chan) $nick]
dict set ::av::idle($chan) $nick [incr i]
if {$i>=$lignes} {pushmode $chan +v $nick}
} else {
dict set ::av::idle($chan) $nick 1
}
flushmode $chan
}
proc chgn {nick host hand chan new} {
set chan [string tolower $chan]
if {[lsearch -nocase $::av::salons $chan]==-1 || [isbotnick $nick]} return
if {[info exists ::av::idle($chan)] && [dict exists $::av::idle($chan) $nick]} {
dict set ::av::idle($chan) $new [dict get $::av::idle($chan) $nick]
dict unset ::av::idle($chan) $nick
} else {
dict set ::av::idle($chan) $nick 0
}
}
}