#################### ### Statistiques ### #################### bind dcc p messtats dcc_messtats proc dcc_messtats {hand idx args} { putdcc $idx "Voici les statistiques sur $hand pour la dernière période (depuis lundi ou le reset)" set sjoin [getuser $hand XTRA statsjoin] set schon [getuser $hand XTRA statschon] set spub [getuser $hand XTRA statspub] set soncanal [getuser $hand XTRA statsoncanal] set splusoncanal [getuser $hand XTRA statsplusoncanal] set sonbot [getuser $hand XTRA statsonbot] set sonbot2 [getuser $hand XTRA statsonbotnonaway] set dispo [getuser $hand XTRA statsdispomoy] set dispoparr [getuser $hand XTRA statsdispomoyparr] putdcc $idx "+------------------------------------------+" putdcc $idx " Entrées sur le canal: $sjoin" putdcc $idx " Lignes sur le canal: $spub" putdcc $idx " Temps sur le canal: [dire_delai [expr 60 * $soncanal]]" putdcc $idx " ... avec le plus: [dire_delai [expr 60 * $splusoncanal]]" putdcc $idx " Entrées sur AideBot: $schon" putdcc $idx " Temps sur AideBot: [dire_delai [expr 60 * $sonbot]]" putdcc $idx " ... non-away: [dire_delai [expr 60 * $sonbot2]]" putdcc $idx "+------------------------------------------+" if [matchattr $hand AOJE] { if [matchattr $hand A] { putdcc $idx " Disponibilités d'op: [string range $dispo 0 4]% / [string range [getuser AideBot xtra statsdispomoyops] 0 4]%" putdcc $idx " Disponibilités parrain: [string range $dispoparr 0 4]% / [string range [getuser AideBot xtra statsdispomoyparr] 0 4]%" putdcc $idx " Quotas de votes: [getuser $hand xtra quotavote]/7" } else { if [matchattr $hand OJ] { putdcc $idx " Disponibilités d'op: [string range $dispo 0 4]% / [string range [getuser AideBot xtra statsdispomoyops] 0 4]%" set hey [expr [getuser $hand xtra presenceop] + [expr $soncanal / 60] - 7] if {$hey > 9} { set presenceop "Maximum" } elseif {$hey > 7} { set presenceop "Super" } elseif {$hey > 0} { set presenceop "Oki" } else { set presenceop "4Trop bas (-[expr 1 - $hey]h)" } set hey [getuser $hand xtra quotavote] if {$hey > 5} { set quotavote "Oki" } else { set quotavote "8Attention! (pour [expr 6- $hey] votes)" } putdcc $idx " Quotas -> Présence OP: $presenceop | Votes: $quotavote" } if [matchattr $hand E] { putdcc $idx " Disponibilités parrain: [string range $dispoparr 0 4]% / [string range [getuser AideBot xtra statsdispomoyparr] 0 4]%" set hey [expr [getuser $hand xtra presenceparrain] + [expr $sonbot2 / 60] - 7] if {$hey > 9} { set presenceparrain "Maximum" } elseif {$hey > 7} { set presenceparrain "Super" } elseif {$hey > 0} { set presenceparrain "Oki" } else { set presenceparrain "4Trop bas (-[expr 1 - $hey]h)" } putdcc $idx " Quotas -> Présence PARRAIN: $presenceparrain" } } putdcc $idx "+------------------------------------------+" } set s [getuser $hand xtra sacresPL] if {$s == ""} { set s 0 } if $s { putdcc $idx " Boots (Avertissements) vocabulaire: [expr $s / 2] ([expr $s % 2])" putdcc $idx "+------------------------------------------+" } return 1 } bind dcc p meilleurs dcc_meilleurs proc dcc_meilleurs { hand idx args } { foreach pos "1 2 3" { set plus_lignes($pos) "AideBot 0" set plus_temps($pos) "AideBot 0" set plus_plus($pos) "AideBot 0" set plus_op($pos) "AideBot 0" set gagnant "AideBot 0" } foreach user [userlist ATCGOJPRMH] { if {[getuser $user XTRA statspub] > [lindex $plus_lignes(1) 1]} { set plus_lignes(3) $plus_lignes(2) set plus_lignes(2) $plus_lignes(1) set plus_lignes(1) "$user [getuser $user XTRA statspub]" } elseif {[getuser $user XTRA statspub] > [lindex $plus_lignes(2) 1]} { set plus_lignes(3) $plus_lignes(2) set plus_lignes(2) "$user [getuser $user XTRA statspub]" } elseif {[getuser $user XTRA statspub] > [lindex $plus_lignes(3) 1]} { set plus_lignes(3) "$user [getuser $user XTRA statspub]" } if {[getuser $user XTRA statsoncanal] > [lindex $plus_temps(1) 1]} { set plus_temps(3) $plus_temps(2) set plus_temps(2) $plus_temps(1) set plus_temps(1) "$user [getuser $user XTRA statsoncanal]" } elseif {[getuser $user XTRA statsoncanal] > [lindex $plus_temps(2) 1]} { set plus_temps(3) $plus_temps(2) set plus_temps(2) "$user [getuser $user XTRA statsoncanal]" } elseif {[getuser $user XTRA statsoncanal] > [lindex $plus_temps(3) 1]} { set plus_temps(3) "$user [getuser $user XTRA statsoncanal]" } if {[getuser $user XTRA statsplusoncanal] > [lindex $plus_plus(1) 1]} { set plus_plus(3) $plus_plus(2) set plus_plus(2) $plus_plus(1) set plus_plus(1) "$user [getuser $user XTRA statsplusoncanal]" } elseif {[getuser $user XTRA statsplusoncanal] > [lindex $plus_plus(2) 1]} { set plus_plus(3) $plus_plus(2) set plus_plus(2) "$user [getuser $user XTRA statsplusoncanal]" } elseif {[getuser $user XTRA statsplusoncanal] > [lindex $plus_plus(3) 1]} { set plus_plus(3) "$user [getuser $user XTRA statsplusoncanal]" } } foreach user [userlist OJ-A] { if {[getuser $user XTRA statsdispomoy] > [lindex $plus_op(1) 1]} { set plus_op(3) $plus_op(2) set plus_op(2) $plus_op(1) set plus_op(1) "$user [getuser $user XTRA statsdispomoy]" } elseif {[getuser $user XTRA statsdispomoy] > [lindex $plus_op(2) 1]} { set plus_op(3) $plus_op(2) set plus_op(2) "$user [getuser $user XTRA statsdispomoy]" } elseif {[getuser $user XTRA statsdispomoy] > [lindex $plus_op(3) 1]} { set plus_op(3) "$user [getuser $user XTRA statsdispomoy]" } } if {$idx != 0} { putdcc $idx "!!! Les meilleurs depuis lundi (membres officiels et + uniquement) !!!" if [matchattr $hand A] { putdcc $idx " 14 => Temps canal total: 1-[getuser [lindex $plus_temps(1) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_temps(1) 1]]]) 2-[getuser [lindex $plus_temps(2) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_temps(2) 1]]]) 3-[getuser [lindex $plus_temps(3) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_temps(3) 1]]])" } putdcc $idx " => Temps canal +v: 1-[getuser [lindex $plus_plus(1) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_plus(1) 1]]]) 2-[getuser [lindex $plus_plus(2) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_plus(2) 1]]]) 3-[getuser [lindex $plus_plus(3) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_plus(3) 1]]])" if [matchattr $hand A] { putdcc $idx " 14 => Lignes sur le canal: 1-[getuser [lindex $plus_lignes(1) 0] xtra vrainick] ([lindex $plus_lignes(1) 1] lignes) 2-[getuser [lindex $plus_lignes(2) 0] xtra vrainick] ([lindex $plus_lignes(2) 1] lignes) 3-[getuser [lindex $plus_lignes(3) 0] xtra vrainick] ([lindex $plus_lignes(3) 1] lignes)" } putdcc $idx " * Ops les plus présents: 1-[getuser [lindex $plus_op(1) 0] xtra vrainick] 2-[getuser [lindex $plus_op(2) 0] xtra vrainick] 3-[getuser [lindex $plus_op(3) 0] xtra vrainick]" putdcc $idx "!!! Les meilleurs de la semaine passée! (et le ou la championne!) !!!" if [matchattr $hand A] { putdcc $idx " 14 [getuser AideBot XTRA statsdelasemaine1]" } putdcc $idx " [getuser AideBot XTRA statsdelasemaine2]" if [matchattr $hand A] { putdcc $idx " 14 [getuser AideBot XTRA statsdelasemaine3]" } putdcc $idx " [getuser AideBot XTRA statsdelasemaine4]" putdcc $idx " [getuser AideBot XTRA partdelasemaine]" putdcc $idx " [getuser AideBot XTRA statsdelasemaine5]" return 1 } else { setuser AideBot XTRA statsdelasemaine1 "-> Temps canal total: 1-[getuser [lindex $plus_temps(1) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_temps(1) 1]]]) 2-[getuser [lindex $plus_temps(2) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_temps(2) 1]]]) 3-[getuser [lindex $plus_temps(3) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_temps(3) 1]]])" setuser AideBot XTRA statsdelasemaine2 "-> Temps canal +v: 1-[getuser [lindex $plus_plus(1) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_plus(1) 1]]]) 2-[getuser [lindex $plus_plus(2) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_plus(2) 1]]]) 3-[getuser [lindex $plus_plus(3) 0] xtra vrainick] ([dire_delai [expr 60 * [lindex $plus_plus(3) 1]]])" setuser AideBot XTRA statsdelasemaine3 "-> Lignes sur le canal: 1-[getuser [lindex $plus_lignes(1) 0] xtra vrainick] ([lindex $plus_lignes(1) 1] lignes) 2-[getuser [lindex $plus_lignes(2) 0] xtra vrainick] ([lindex $plus_lignes(2) 1] lignes) 3-[getuser [lindex $plus_lignes(3) 0] xtra vrainick] ([lindex $plus_lignes(3) 1] lignes)" setuser AideBot XTRA statsdelasemaine4 "* Ops les plus présents: 1-[getuser [lindex $plus_op(1) 0] xtra vrainick] 2-[getuser [lindex $plus_op(2) 0] xtra vrainick] 3-[getuser [lindex $plus_op(3) 0] xtra vrainick]" foreach user "[lindex $plus_lignes(1) 0] [lindex $plus_lignes(2) 0] [lindex $plus_lignes(3) 0] [lindex $plus_plus(1) 0] [lindex $plus_plus(2) 0] [lindex $plus_plus(3) 0]" { set bravo [expr [expr 5 * [getuser $user xtra statsplusoncanal]] + [getuser $user xtra statspub]] if {$bravo > [lindex $gagnant 1]} { set gagnant "$user $bravo [getuser $user xtra statsplusoncanal] [getuser $user xtra statspub]" } } setuser AideBot XTRA statsdelasemaine5 "*+*+*+*+*+* La meilleure fiche: --> [getuser [lindex $gagnant 0] xtra vrainick] <-- *+*+*+*+*+*" exec echo "[unixtime] [getuser [lindex $gagnant 0] xtra vrainick] [lindex $gagnant 2] [lindex $gagnant 3]" >> tableau.dhonneur chattr [lindex $gagnant 0] +K time_superpartfin lire_tableau ### Avertir ops de moins de 10% ### foreach user [userlist OJ-A] { if {[getuser $user XTRA statsdispomoy] < 10} { sendnote AideBot $user "Allô! Avais-tu remarqué que ton pourcentage de présence était rendu à [string range [getuser $user XTRA statsdispomoy] 0 3]%? Les membres vont commencer à s'ennuyer de toi :-) Ceci dit, si tu as un empêchement ces jours-ci, y'a pas de mal, mais il serait bien que tu en discutes avec un admin canal pour qu'ils soient au courrant. Merci!" if ![absent $user] { foreach admin [userlist C] { sendnote AideBot $admin "OP À 10% OU MOINS: [getuser $user xtra vrainick] -- Si c'est la deuxième semaine en ligne que c'est le cas, il faudrait lui en parler..." } } } } return 0 } } bind dcc A stats dcc_stats proc dcc_stats {hand idx args} { if {$args == "total"} { putdcc $idx "Statistiques des membres ..." putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" putdcc $idx " [llength [userlist A]] Administrateurs." putdcc $idx " [expr [llength [userlist OJA]] - [llength [userlist A]]] Opérateurs ou opérateurs adjoints. ([expr [llength [userlist OA]] - [llength [userlist A]]]/[llength [userlist J]])" putdcc $idx " [llength [userlist RP]] Participants à des projets." putdcc $idx " [llength [userlist AGCTOJRPMHS]] Membres officiels actifs (grand total)." putdcc $idx " [llength [userlist N]] Nouveaux membres en évaluation." putdcc $idx " [llength [userlist V]] Aidants du jour connus." putdcc $idx " [llength [userlist S]] Membres suspendus." putdcc $idx " [llength [userlist d|d #aide]] Personnes à surveiller" putdcc $idx " [llength [userlist XY]] Comptes désactivés" putdcc $idx "________________________" } elseif {$args == "age"} { for {set i 0} {$i < 50} {incr i} { set age($i) 0 } set liste "" foreach user [userlist AGTCOJRPMNH] { set ddn [getuser $user xtra ddn] if {$ddn > 31536000} { set sonage [expr [expr [unixtime] - $ddn] / 31556736.0] lappend liste $sonage set ans [expr [expr [unixtime] - $ddn] / 31556736] incr age($ans) } } putdcc $idx "Histogramme des âges" putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" for {set i 0} {$i < 50} {incr i} { if $age($i) { set txt " $i ans: " for {set j 0} {$j < $age($i)} {incr j} { append txt "Ÿ" } putdcc $idx $txt } } putdcc $idx " ¤ Statistiques: (pour [llength $liste] sur [llength [userlist AGTCOJRPMNH]] membres)" putdcc $idx " Âge moyen réel -> [string range [moyenne $liste] 0 3] ans" putdcc $idx " Âge médian réel -> [string range [mediane $liste] 0 3] ans" putdcc $idx " Écart type des âges réels -> [string range [ecart_type $liste] 0 3] ans" putdcc $idx " -" set liste "" foreach user [userlist AGTCOJRPMNH] { set ddn [getuser $user xtra ddn] if {$ddn > 31536000} { set sonage [expr [expr [getuser $user xtra date] - $ddn] / 31556736.0] lappend liste $sonage } } putdcc $idx " Àge moyen d'arrivée -> [string range [moyenne $liste] 0 3] ans" putdcc $idx " Àge médian d'arrivée -> [string range [mediane $liste] 0 3] ans" putdcc $idx " -" putdcc $idx " N.B.: - Réel veux dire que les fractions d'années sont prises en compte." putdcc $idx " - Évidemment, cette évaluation ne tient compte que des gens" putdcc $idx " ayant effectivement signalé leur date anniversaire." putdcc $idx " - Si vous trouvez ça passablement inutile, sachez que moi aussi:" putdcc $idx " -> .boot Dripper Espèce d'inutile." } elseif {$args == "evaluations"} { set liste "" foreach user [userlist N] { append liste " [getuser $user xtra eval]" } set evals(hands) "" foreach eval $liste { if ![info exist evals([lindex $eval 0],total)] { set evals([lindex $eval 0],total) 1 set evals([lindex $eval 0],xtrm) 0 lappend evals(hands) [lindex $eval 0] } else { incr evals([lindex $eval 0],total) } if {([lindex $eval 1] == 5) | ([lindex $eval 1] == 0)} { incr evals([lindex $eval 0],xtrm) } } set liste "" foreach pers $evals(hands) { set moy [expr 1.0 * $evals($pers,xtrm) / $evals($pers,total)] if {$moy > 0} { lappend liste "$pers $moy" } } set liste [classement $liste "-"] putdcc $idx "Liste des maniaques de l'évaluation exagérée ..." putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" foreach user $liste { putdcc $idx "[ajouter_espaces [lindex $user 0] 11] -> Évaluations extrêmes (0 ou 5): $evals([lindex $user 0],xtrm) sur $evals([lindex $user 0],total) ." } putdcc $idx "__________________________________________________________" } elseif {$args == "puc"} { set liste "" foreach user [userlist Z] { set delai [expr [unixtime] - [lindex [getuser $user laston] 0]] lappend liste "$user $delai" } set liste [classement $liste +] putdcc $idx "Infos sur le personnel d'Undernet ayant visité le canal" putdcc $idx "-------------------------------------------------------" foreach user $liste { putdcc $idx " [ajouter_espaces "[lindex $user 0] :" 12] Vu: [ajouter_espaces [dire_delai [lindex $user 1]] 25] Cette semaine: [dire_delai [expr 60 * [getuser [lindex $user 0] xtra statsoncanal]]]" } putdcc $idx "-------------------------------------------------------" } elseif {$args == "futurs"} { putdcc $idx "Statistiques des gens voulant devenir op \[Moy des ops: [string range [getuser AideBot xtra statsdispomoyops] 0 4]%\] (Disponibilité par jour, sur deux semaines)..." set listops "" foreach user [userlist M] { if {[getuser $user xtra futur] == 1} { if [absent $user] { set laoupas "*" } else { set laoupas " " } lappend listeops "{[getuser $user xtra vrainick] $laoupas} [getuser $user xtra statsdispomoy]" } } putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" foreach user [classement $listeops "-"] { putdcc $idx "[ajouter_espaces "[lindex [lindex $user 0] 0] :" 13] [string range [lindex $user 1] 0 4]% [lindex [lindex $user 0] 1]" } putdcc $idx "_________________________" } elseif {$args == "bots"} { putdcc $idx "Statistiques des bots... (Depuis lundi ou le reset)" putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" set lundi [expr [expr [unixtime] - 988002000] % 604800] foreach user [userlist b] { if ![string match *IGT* $user] { set pc [expr [expr [getuser $user xtra statsoncanal] * 6000.0] / $lundi] putdcc $idx "[ajouter_espaces $user 11] -> Joins: [getuser $user XTRA statsjoin] Pour: [dire_delai [expr [getuser $user xtra statsoncanal] * 60]] ([string range $pc 0 4]%)" } } putdcc $idx "__________________________________________________________" } elseif {$args == "ops"} { putdcc $idx "Statistiques des ops \[Moy: [string range [getuser AideBot xtra statsdispomoyops] 0 4]%\] (Disponibilité par jour, sur deux semaines)..." set listops "" foreach user [userlist OJ-A] { if [absent $user] { set laoupas "*" } else { set laoupas " " } lappend listeops "{[getuser $user xtra vrainick] [getuser $user xtra quotavote] [getuser $user xtra presenceop] $laoupas} [getuser $user xtra statsdispomoy]" } putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" foreach user [classement $listeops "-"] { putdcc $idx "[ajouter_espaces "[lindex [lindex $user 0] 0] :" 13] [string range [lindex $user 1] 0 4]% Quotas -> Votes: [lindex [lindex $user 0] 1]/10 Présence: [lindex [lindex $user 0] 2]/10 [lindex [lindex $user 0] 3]" } putdcc $idx "__________________________________________________________" } elseif {$args == "parrains"} { putdcc $idx "Statistiques des parrains \[Moy: [string range [getuser AideBot xtra statsdispomoyparr] 0 4]%\] (Disponibilité par jour, sur deux semaines)..." set listparr "" foreach user [userlist E-A] { if [absent $user] { set laoupas "*" } else { set laoupas " " } lappend listeparr "{[getuser $user xtra vrainick] [getuser $user xtra presenceparrain] $laoupas} [getuser $user xtra statsdispomoyparr]" } putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" foreach user [classement $listeparr "-"] { putdcc $idx "[ajouter_espaces "[lindex [lindex $user 0] 0] :" 13] [string range [lindex $user 1] 0 4]% Présence: [lindex [lindex $user 0] 1]/10 [lindex [lindex $user 0] 2]" } putdcc $idx "__________________________________________________________" } elseif {$args == "admins"} { putdcc $idx "Statistiques des admins \[Moy admins/ops: [string range [getuser AideBot xtra statsdispomoyadmins] 0 4]%/[string range [getuser AideBot xtra statsdispomoyops] 0 4]%\]" putdcc $idx " \[Moy admins/parrains: [string range [getuser AideBot xtra statsdispomoyadminsparr] 0 4]%/[string range [getuser AideBot xtra statsdispomoyparr] 0 4]%\]" putdcc $idx " (Disponibilité par jour, sur deux semaines)..." set listops "" foreach user [userlist A] { if [absent $user] { set laoupas "*" } else { set laoupas " " } lappend listeops "{[getuser $user xtra vrainick] [getuser $user xtra quotavote] [getuser $user xtra statsdispomoyparr] $laoupas} [getuser $user xtra statsdispomoy]" } putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" putdcc $idx " OP PAR" foreach user $listeops { putdcc $idx "[ajouter_espaces "[lindex [lindex $user 0] 0] :" 13] [string range [lindex $user 1] 0 4]% [string range [lindex [lindex $user 0] 2] 0 4]% Quotas -> Votes: [lindex [lindex $user 0] 1]/7 [lindex [lindex $user 0] 3]" } putdcc $idx "__________________________________________________________" } elseif {$args == "boots"} { set donnes "" set recus "" foreach user [userlist] { set booter [lindex [getuser $user xtra boots] 0] if {($booter != "") & ($booter != 0)} { lappend donnes "[getuser $user xtra vrainick] $booter" } set booted [lindex [getuser $user xtra boots] 1] if {($booted != "") & ($booted != 0)} { lappend recus "[getuser $user xtra vrainick] $booted" } } putdcc $idx "---------------" putdcc $idx " Booooooooots! (3/5/2001)" putdcc $idx "---------------" putdcc $idx " ** Donnés ** " foreach user [classement $donnes -] { putdcc $idx " [ajouter_espaces "[lindex $user 0] :" 12] [lindex $user 1]x" } putdcc $idx "---------------" putdcc $idx " ** Reçus ** " foreach user [classement $recus -] { putdcc $idx " [ajouter_espaces "[lindex $user 0] :" 12] [lindex $user 1]x" } putdcc $idx "---------------" } elseif {$args == "vocabulaire"} { set sacres "" foreach user [userlist] { set s [getuser $user xtra sacresPL] if {$s != ""} { lappend sacres "[getuser $user xtra vrainick] $s" } } putdcc $idx "-------------------------" putdcc $idx " Vocabulaire indécent ..." putdcc $idx "-------------------------" foreach user [classement $sacres -] { putdcc $idx " [ajouter_espaces "[lindex $user 0] :" 12] [expr [lindex $user 1] / 2] ([expr [lindex $user 1] % 2])" } putdcc $idx "-------------------------" } elseif {[lindex [lindex $args 0] 0] == "provenance"} { set c [lindex [lindex $args 0] 1] set total 0 set f [open "stats.canaux.prov.classement" r] while {[gets $f line] >= 0} { lappend canauxclasses(liste) [lindex $line 0] set canauxclasses([lindex $line 0]) [lindex $line 1] set total [expr $total + [lindex $line 1]] } close $f if {$c != ""} { if [string match "* $c *" " $canauxclasses(liste) "] { putdcc $idx "Stats de $c: Compté $canauxclasses($c)x sur un total de $total pour [string range [expr [expr 100.0 / $total] * $canauxclasses($c)] 0 6]%." } else { putdcc $idx "Canal $c introuvable..." } } else { set min "1.0" if [file exist stats.canaux.prov] { exec mv stats.canaux.prov stats.canaux.prov.tmp set f [open "stats.canaux.prov.tmp" r] while {[gets $f line] >= 0} { foreach can $line { if {[lsearch -exact $canauxclasses(liste) $can] != -1} { incr canauxclasses($can) incr total } else { if {($can != "#igt") & ($can != "#aide") & ($can != "#cours")} { lappend canauxclasses(liste) $can set canauxclasses($can) 1 incr total } } } } close $f exec rm stats.canaux.prov.tmp set f [open "stats.canaux.prov.classement" w] foreach can $canauxclasses(liste) { puts $f "$can $canauxclasses($can)" } close $f } set sortie "{}" while {[llength $sortie] < 10} { set sortie "{}" set min [expr $min - 0.1] foreach can $canauxclasses(liste) { set pc [string range [expr [expr 100.0 * $canauxclasses($can)] / $total] 0 4] if {$pc > $min} { lappend sortie "{$can $pc} [lindex [split [expr $pc * 100] .] 0]" } } } set sortie [classement [lrange $sortie 1 end] "-"] putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" putdcc $idx "Voici d'où proviennent les gens entrant sur #Aide en général:" putdcc $idx "_____________________________________________________________" putdcc $idx "" foreach can $sortie { putdcc $idx " [ajouter_espaces [lindex [lindex $can 0] 0] 20] @ [lindex [lindex $can 0] 1]%" } putdcc $idx "" putdcc $idx "(Les autres sont sous les $min%)" putdcc $idx "" putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" putdcc $idx " Canaux différents: [llength $canauxclasses(liste)] Total général: $total (30/10/02)" putdcc $idx "_____________________________________________________________" } } elseif {[lindex [lindex $args 0] 0] == "fantomes"} { set date [dire_date [expr [unixtime] - [expr [strftime %w [unixtime]] * 86400] - 1814400]] set cible [lindex [lindex $args 0] 1] if {$cible == ""} { set date [dire_date [expr [unixtime] - [expr [strftime %w [unixtime]] * 86400] - 1814400]] putdcc $idx "---------------------------------------------------------------------------------" putdcc $idx " Voici la liste des gens peu présents sur le canal ce dernier mois." putdcc $idx "---------------------------------------------------------------------------------" putdcc $idx " Qui? * Pour les 4 dernières semaines (depuis stats $date)*" putdcc $idx " ** À date cette semaine **" foreach user [userlist M] { if ![matchattr $user AOJH] { set lcan(tot) 0 set tcan(tot) 0 set lcan(lst) "" set tcan(lst) "" exec echo [getuser $user xtra vrainick] > /aide/aidebot/fantomes.compilation exec grep -A 1000 $date /aide/www/admins/stats.txt >> /aide/aidebot/fantomes.compilation foreach ligne [lrange [split [exec grep -i [getuser $user xtra vrainick] /aide/aidebot/fantomes.compilation] \n] 1 end] { set tcan(tot) [expr $tcan(tot) + [lindex $ligne 3]] lappend tcan(lst) [lindex $ligne 3] set tmp [lindex $ligne 5] set lcan(tot) [expr $lcan(tot) + [string range $tmp 1 [expr [string length $tmp] -2]]] lappend lcan(lst) [string range $tmp 1 [expr [string length $tmp] -2]] } set tcan(tot) [expr $tcan(tot) / 4] set lcan(tot) [expr $lcan(tot) / 4] if {($tcan(tot) < 30) | ($lcan(tot) < 20)} { if [matchattr $user PR] { putdcc $idx " 3[ajouter_espaces "$user :" 11]15 Participe à un projet activement." } elseif [absent $user] { putdcc $idx " 5[ajouter_espaces "$user :" 11]14 Est absent: [getuser $user xtra absence]" } elseif {[getuser $user xtra date] > [expr [unixtime] - 3024000]} { putdcc $idx " 13[ajouter_espaces "$user :" 11]15 Est un tout nouveau membre" } elseif {[llength $tcan(lst)] == 4} { putdcc $idx "¯-_-¯-_ 4[ajouter_espaces "$user :" 11] [ajouter_espaces $tcan(tot) 2] min [ajouter_espaces ($tcan(lst)) 13] pour [ajouter_espaces $lcan(tot) 3] lignes ($lcan(lst))" putdcc $idx " [ajouter_espaces [getuser $user XTRA statsplusoncanal] 2] min pour [ajouter_espaces [getuser $user XTRA statspub] 3] lignes" } else { putdcc $idx " 7[ajouter_espaces "$user :" 11]14 Échantillonage trop petit, problème?" } } } } } else { if ![matchattr $cible pSW] { putdcc $idx "Membre inconnu." return 0 } set user [getuser $cible xtra vrainick] set lcan(tot) 0 set tcan(tot) 0 set lcan(lst) "" set tcan(lst) "" foreach ligne [split [exec grep -A [expr [expr [llength [userlist AGCTOJRPM]] + 7] * 4] $date /aide/www/admins/stats.txt | grep -i $user] \n] { set tcan(tot) [expr $tcan(tot) + [lindex $ligne 3]] lappend tcan(lst) [lindex $ligne 3] set tmp [lindex $ligne 5] set lcan(tot) [expr $lcan(tot) + [string range $tmp 1 [expr [string length $tmp] -2]]] lappend lcan(lst) [string range $tmp 1 [expr [string length $tmp] -2]] } set tcan(tot) [expr $tcan(tot) / 4] set lcan(tot) [expr $lcan(tot) / 4] putdcc $idx "Infos sur:  $user  : $tcan(tot) min ($tcan(lst)) pour $lcan(tot) lignes ($lcan(lst)) -- Moyenne sur 4 semaines --" putdcc $idx " [getuser $cible XTRA statsplusoncanal] min pour [getuser $cible XTRA statspub] lignes -- à date cette semaine --" } } elseif {([string range $args 0 7] == "absences")|([string range $args 1 8] == "absences")} { putdcc $idx "Voici la liste des gens ayant déclaré une absence:" foreach user [userlist AGCTOJRPM] { if [absent $user] { putdcc $idx "[ajouter_espaces " - [getuser $user xtra vrainick]:" 15] [getuser $user xtra absence]" } } } elseif {([string range $args 0 5] == "depuis")|([string range $args 1 6] == "depuis")} { set depuisquand [lindex [lindex $args 0] 1] set ouca [lindex [lindex $args 0] 2] if ![estunnombre:ok $depuisquand] { set depuisquand 7 set ouca [lindex [lindex $args 0] 1] } if [string match "* [string tolower $ouca] *" " [string tolower [channels]] "] { set oki 1 } else { set oki 0 } set ppl "" foreach i [userlist ACGTOJMNHRP] { if $oki { set last [lindex [getuser $i laston $ouca] 0] } else { set last [lindex [getuser $i laston] 0] } if {$last < [expr [unixtime] - [expr $depuisquand * 86400]]} { lappend ppl $i } } if {$ppl == ""} { putdcc $idx "Personne n'est absent depuis $depuisquand jours." } else { set temp "Voici ceux qui ne sont pas venus depuis $depuisquand jour(s) ou plus" if $oki { append temp " sur $ouca" } putdcc $idx "$temp\:" foreach j $ppl { if $oki { set delai [lindex [getuser $j laston $ouca] 0] } else { set delai [lindex [getuser $j laston] 0] } if {($delai == 0)|($delai == "")} { putdcc $idx [format "%-9s -- Jamais" $j] } else { set absence [getuser $j xtra absence] if {$absence == ""} { set labsence "" } else { set labsence "($absence)" } putdcc $idx [format "%-9s -- Pas revu depuis [expr [expr [unixtime] - $delai] / 86400] jours. $labsence" $j] } } } } elseif {[string range $args 1 4] == "voir"} { set hand [string range $args 6 [expr [string length $args] -2]] if {[matchattr $hand AGCTOJKRPMNHV]} { if ![matchattr $hand NV] { putdcc $idx "Voici les statistiques sur $hand pour la dernière période (depuis lundi ou le reset)" } elseif [matchattr $hand N] { putdcc $idx "Voici les statistiques totales de $hand depuis qu'[mf $hand "il" "elle"] est en évaluation." } else { putdcc $idx "Voici les statistiques totales de $hand depuis qu'[mf $hand "il" "elle"] a reçu son premier +." } set sjoin [getuser $hand XTRA statsjoin] set schon [getuser $hand XTRA statschon] set spub [getuser $hand XTRA statspub] set soncanal [getuser $hand XTRA statsoncanal] set splusoncanal [getuser $hand XTRA statsplusoncanal] set sonbot [getuser $hand XTRA statsonbot] set sonbot2 [getuser $hand XTRA statsonbotnonaway] set dispo [getuser $hand XTRA statsdispomoy] set dispoparr [getuser $hand XTRA statsdispomoyparr] set absence [getuser $hand XTRA absence] if {$sonbot != ""} { set humhum [dire_delai [expr 60 * $sonbot]] } else { set humhum "" } if {$sonbot2 != ""} { set humhum2 [dire_delai [expr 60 * $sonbot2]] } else { set humhum2 "" } putdcc $idx "+------------------------------------------+" putdcc $idx " Entrées sur le canal: $sjoin" putdcc $idx " Lignes sur le canal: $spub" putdcc $idx " Temps sur le canal: [dire_delai [expr 60 * $soncanal]]" putdcc $idx " ... avec le plus: [dire_delai [expr 60 * $splusoncanal]]" putdcc $idx " Entrées sur AideBot: $schon" putdcc $idx " Temps sur AideBot: $humhum" putdcc $idx " ... non-away: $humhum2" putdcc $idx "+------------------------------------------+" if [matchattr $hand AOJE] { if [matchattr $hand A] { putdcc $idx " Disponibilités d'op: [string range $dispo 0 4]%" putdcc $idx " Disponibilités parrain: [string range $dispoparr 0 4]%" putdcc $idx " Quotas de votes: [getuser $hand xtra quotavote]/7" } else { if [matchattr $hand OJ] { putdcc $idx " Disponibilités d'op: [string range $dispo 0 4]%" putdcc $idx " Quotas -> Présence: [getuser $hand xtra presenceop]/10 | Votes: [getuser $hand xtra quotavote]/10" } if [matchattr $hand E] { putdcc $idx " Disponibilités parrain: [string range $dispoparr 0 4]%" putdcc $idx " Quotas -> Présence: [getuser $hand xtra presenceparrain]/10" } } putdcc $idx "+------------------------------------------+" } if {$absence != ""} { putdcc $idx " $hand a signalé une absence: $absence" putdcc $idx "+------------------------------------------+" } return 1 } else { putdcc $idx "Je ne connais personne de ce nom ..." return 0 } } else { putdcc $idx "## Statistiques ##" putdcc $idx " - Commandes disponibles: .stats total" putdcc $idx " .stats depuis \[jours\] \[#Canal|partyline\]" putdcc $idx " .stats absences" putdcc $idx " .stats admins" putdcc $idx " .stats ops" putdcc $idx " .stats parrains" putdcc $idx " .stats futurs" putdcc $idx " .stats bots" putdcc $idx " .stats boots" putdcc $idx " .stats evaluations" putdcc $idx " .stats age" putdcc $idx " .stats vocabulaire" putdcc $idx " .stats provenance \[canal\]" putdcc $idx " .stats fantomes \[membre\]" putdcc $idx " .stats voir " return 0 } return 1 } ##### ----- proc vider_stats { } { foreach user [userlist OJ-A] { set avant [getuser $user xtra presenceop] if {$avant == ""} { set avant 1 } set total [expr $avant -7 + [expr [getuser $user XTRA statsoncanal] / 60]] if {$total > 10} { set total 10 } elseif {[absent $user] && ($total < 1)} { set total 1 } else { } setuser $user xtra presenceop $total } foreach user [userlist E-A] { set avant [getuser $user xtra presenceparrain] if {$avant == ""} { set avant 1 } set total [expr $avant -7 + [expr [getuser $user XTRA statsonbot] / 60]] if {$total > 10} { set total 10 } elseif {[absent $user] && ($total < 1)} { set total 1 } else { } setuser $user xtra presenceparrain $total } dcc_meilleurs "" 0 "" foreach hand [userlist AGCTOJKRPMHWXYZ] { setuser $hand XTRA statsjoin 0 setuser $hand XTRA statschon 0 setuser $hand XTRA statspub 0 setuser $hand XTRA statsoncanal 0 setuser $hand XTRA statsplusoncanal 0 setuser $hand XTRA statsoponcanal 0 setuser $hand XTRA statsonbot 0 setuser $hand XTRA statsonbotnonaway 0 } foreach hand [userlist b] { setuser $hand XTRA statsjoin 0 setuser $hand XTRA statsoncanal 0 } } proc vider_statsdujour { } { foreach hand [userlist AOJERPM] { set moy [getuser $hand XTRA statsdispomoy] if {$moy == ""} {set moy 0} set moyparr [getuser $hand XTRA statsdispomoyparr] if {$moyparr == ""} {set moyparr 0} setuser $hand XTRA statsdispomoy [expr [expr $moy * 14.00 / 15.00] + [expr [getuser $hand XTRA statsdispo] / 21600.00]] setuser $hand XTRA statsdispo 0 setuser $hand XTRA statsdispomoyparr [expr [expr $moyparr * 14.00 / 15.00] + [expr [getuser $hand XTRA statsdispoparr] / 21600.00]] setuser $hand XTRA statsdispoparr 0 } set lamoy 0 foreach user [userlist OJ-A] { set lamoy [expr $lamoy + [getuser $user xtra statsdispomoy]] } set lamoy [expr $lamoy / [llength [userlist OJ-A]]] setuser AideBot xtra statsdispomoyops $lamoy set lamoyparr 0 foreach user [userlist E-A] { set lamoyparr [expr $lamoyparr + [getuser $user xtra statsdispomoyparr]] } set lamoyparr [expr $lamoyparr / [llength [userlist E-A]]] setuser AideBot xtra statsdispomoyparr $lamoyparr set lamoy 0 set lamoyparr 0 foreach user [userlist A] { set lamoy [expr $lamoy + [getuser $user xtra statsdispomoy]] set lamoyparr [expr $lamoyparr + [getuser $user xtra statsdispomoyparr]] } set lamoy [expr $lamoy / [llength [userlist A]]] set lamoyparr [expr $lamoyparr / [llength [userlist A]]] setuser AideBot xtra statsdispomoyadmins $lamoy setuser AideBot xtra statsdispomoyadminsparr $lamoyparr # for {set i 0} {$i < 25} {incr i} { # setuser AideBot XTRA plusheure$i 0.000 # setuser AideBot XTRA moinsheure$i 0.000 # } } proc ecrire_statsdujour { } { global moyenneplusdujour moyennemoinsdujour # for {set i 0} {$i < 25} {incr i} { # set p$i [string range [getuser AideBot XTRA plusheure$i] 0 4] # set m$i [string range [getuser AideBot XTRA moinsheure$i] 0 4] # } # set fichier_statsdujour "/aide/www/admins/statsdujour.txt" # set fd [open $fichier_statsdujour a] # puts $fd "[date] $p0/$m0 $p1/$m1 $p2/$m2 $p3/$m3 $p4/$m4 $p5/$m5 $p6/$m6 $p7/$m7 $p8/$m8 $p9/$m9 $p10/$m10 $p11/$m11 $p12/$m12 $p13/$m13 $p14/$m14 $p15/$m15 $p16/$m16 $p17/$m17 $p18/$m18 $p19/$m19 $p20/$m20 $p21/$m21 $p22/$m22 $p23/$m23 - En moyenne: $moyenneplusdujour/$moyennemoinsdujour" # close $fd } proc ecrire_stats { } { set fichier_stats "/aide/www/admins/stats.txt" set fd [open $fichier_stats a] puts $fd "" puts $fd " ##### Statistiques des membres, par AideBot ! #####" puts $fd "" puts $fd "Statistiques pour la semaine se terminant le: [dire_date [unixtime]] (sauf si '.stats écrire')" puts $fd "" puts $fd "Alias Entrées canal Entrées bot Lignes canal Temps canal Temps bot" puts $fd "----- ------------- ----------- ------------ ----------- ---------" foreach hand [userlist AGCTOJRPM] { set s_pub [getuser $hand XTRA statspub] set s_oncanal [getuser $hand XTRA statsoncanal] set s_plusoncanal [getuser $hand XTRA statsplusoncanal] set s_temps_canal "$s_oncanal ($s_plusoncanal)" puts $fd [format "%-20s %-14s %-14s %-14s %-14s %-14s" [getuser $hand xtra vrainick] [getuser $hand XTRA statsjoin] [getuser $hand XTRA statschon] $s_pub $s_temps_canal [getuser $hand XTRA statsonbot]] if {(($s_pub < 4)|($s_oncanal < 5)|($s_plusoncanal < 5)) && ![absent $hand]} { sendnote AideBot $hand "Attention $hand, j'ai remarqué ceci...: Temps sur le canal: $s_oncanal ($s_plusoncanal) minute(s) / Ligne(s) sur le canal: $s_pub - Ne t'en fais pas, ce n'est pas «grave», simplement qu'on aime bien te voir nous autres tu sais! :-)" } } close $fd } ##### ----- bind join ACGTOJRPMNHVZbXYS "#aide *!*@*" stats__join proc stats__join {nick uhost handle channel} { setuser $handle XTRA absence if [matchattr $handle XYS] { return 0 } set total [getuser $handle XTRA statsjoin] if {($total == "")|($total == "0")} { set total 1 } else { set total [expr $total + 1] } setuser $handle XTRA statsjoin $total } bind chon p * stats__chon proc stats__chon {handle idx} { set total [getuser $handle XTRA statschon] if {($total == "")|($total == "0")} { set total 1 } else { incr total } setuser $handle XTRA statschon $total } bind pubm ACGTOJKRPMNHVZ "#aide *" stats__pubm proc stats__pubm {nick uhost handle channel text} { set total [getuser $handle XTRA statspub] if {[isvoice $nick #aide] | [isop $nick #aide]} { if {($total == "")|($total == "0")} { set total 1 } else { incr total } } setuser $handle XTRA statspub $total } timer 1 test_stats proc test_stats { } { global botnick foreach t [timers] { if {[lindex $t 1] == "test_stats"} {return 0} } timer 1 test_stats set justelecanal " " set opsout 0 foreach user [chanlist #aide ACGTOJRPMNHVZ] { set hand [nick2hand $user #aide] append justelecanal "$hand " if {([getchanidle $user #aide] < 25) && [matchattr $hand OJ]} { incr opsout } } set botetcanal $justelecanal set opsin 0 set parrin 0 foreach user [dcclist chat] { if ![string match "* [lindex $user 1] *" $justelecanal] { append botetcanal "[lindex $user 1] " } if {([getdccidle [lindex $user 0]] < 1200) && [matchattr [lindex $user 1] OJ]} { incr opsin } if {([getdccidle [lindex $user 0]] < 1200) && [matchattr [lindex $user 1] E]} { incr parrin } } if {$opsout > 1} { set multiplicateur 1 } elseif {$opsin > 1} { set multiplicateur 2 } else { set multiplicateur 3 } if {$parrin > 1} { set multiplicateurparr 1 } else { set multiplicateurparr 2 } foreach hand $botetcanal { set idx [hand2idx $hand] if [string match *$hand* [dcclist files]] { set idx -1 } set nick [hand2nick $hand #aide] set sob [getuser $hand XTRA statsonbot] if {$sob == ""} {set sob 0} set sobna [getuser $hand XTRA statsonbotnonaway] if {$sobna == ""} {set sobna 0} set soc [getuser $hand XTRA statsoncanal] if {$soc == ""} {set soc 0} set spoc [getuser $hand XTRA statsplusoncanal] if {$spoc == ""} {set spoc 0} set sooc [getuser $hand XTRA statsoponcanal] if {$sooc == ""} {set sooc 0} set dispo [getuser $hand XTRA statsdispo] if {$dispo == ""} {set dispo 0} set dispoparr [getuser $hand XTRA statsdispoparr] if {$dispoparr == ""} {set dispoparr 0} set valeur 1 set valeurparr 1 if {$idx != -1} { incr sob if {[getdccidle $idx] < 1200} { # (en secondes!) set valeur 50 set valeurparr 50 } else { if {[getdccidle $idx] < 2400} { set valeurparr 10 } elseif {[getdccidle $idx] < 2400} { set valeurparr 6 } else { set valeurparr 3 } } if {[getdccaway $idx] == ""} { incr sobna set valeur 80 set valeurparr 100 } } if [onchan $nick #aide] { incr soc if {($valeur < 35) && ([getchanidle $nick #aide] < 25)} { set valeur 35 } if {($valeurparr < 100) && (([getchanidle $nick #aide] < 25) | [isvoice $nick #aide] | [isop $nick #aide])} { set valeurparr [expr $valeurparr + 10] } if [isop $nick #aide] { incr sooc if {[getchanidle $nick #aide] < 15} { set valeur 100 } else { if {$valeur < 2} { set valeur 2 } } } if [isvoice $nick #aide] { incr spoc set valeur 100 # if ![matchattr $hand b] { # set total [getuser AideBot XTRA plusheure$heure] # set total [expr $total + 0.0166666] # setuser AideBot XTRA plusheure$heure $total # } # } else { # if ![matchattr $hand b] { # set total [getuser AideBot XTRA moinsheure$heure] # set total [expr $total + 0.0166666] # setuser AideBot XTRA moinsheure$heure $total # } } } set dispo [expr $multiplicateur * $valeur + $dispo] set dispoparr [expr $multiplicateurparr * $valeurparr + $dispoparr] setuser $hand XTRA statsonbot $sob setuser $hand XTRA statsonbotnonaway $sobna setuser $hand XTRA statsoncanal $soc setuser $hand XTRA statsplusoncanal $spoc setuser $hand XTRA statsoponcanal $sooc setuser $hand XTRA statsdispo $dispo setuser $hand XTRA statsdispoparr $dispoparr } foreach user [chanlist #aide b] { set hand [nick2hand $user] setuser $hand XTRA statsoncanal [expr [getuser $hand XTRA statsoncanal] + 1] } if [onchan profbot #cours] {setuser profbot XTRA statsoncanal [expr [getuser profbot XTRA statsoncanal] + 1]} return 0 } set moyenneplusdujour 0.000 set moyennemoinsdujour 0.000 proc faire_lamoyenne { } { global moyenneplusdujour moyennemoinsdujour set moyenneplusdujour 0.000 set moyennemoinsdujour 0.000 for {set i 0} {$i < 25} {incr i} { set moyenneplusdujour [expr $moyenneplusdujour + [getuser AideBot XTRA plusheure$i] ] set moyennemoinsdujour [expr $moyennemoinsdujour + [getuser AideBot XTRA moinsheure$i] ] } set moyenneplusdujour [string range [expr $moyenneplusdujour / 60 ] 0 4] set moyennemoinsdujour [string range [expr $moyennemoinsdujour / 60 ] 0 4] } bind time - "57 23 * * *" statsdujour_timer proc statsdujour_timer {min hour day month year} { utimer 30 { faire_lamoyenne } utimer 30 { ecrire_statsdujour } utimer 40 { vider_statsdujour } if {[string range [ctime [unixtime]] 0 2] == "Sun"} { utimer 70 ecrire_stats utimer 75 vider_stats } } ##### ----- proc dcc_do_gone {hand idx vars} { set ppl "" foreach i [userlist ACGTOJMNHRP] { set last [lindex [getuser $i laston] 0] if {$last < [expr [unixtime] - [expr $vars * 86400]]} { lappend ppl $i } } if {$ppl == ""} { putdcc $idx "Personne n'est absent depuis $vars jours." } else { putdcc $idx "Voici ceux qui ne sont pas venus depuis $vars jour(s) ou plus:" foreach j $ppl { set delai [lindex [getuser $j laston] 0] if {($delai == 0)|($delai == "")} { putdcc $idx [format "%-9s -- N'a jamais été vu ici ..." $j] } else { set absence [getuser $j xtra absence] if {$absence == ""} { set labsence "" } else { set labsence "($absence)" } putdcc $idx [format "%-9s -- Pas revu depuis [expr [expr [unixtime] - $delai] / 86400] jours. $labsence" $j] } } return 1 } }