Compteur de users
Compteur de users
Voici un petit code qui vous permettra de savoir combien de personne seront venue sur votre salon.
# Liste des canaux où l'on doit activer le script (séparés par des espaces)
set ::compteur(chanlist) "#Salon"
# Afficher un message pour annoncer la place de l'utilisateur lorsqu'il rejoin ?
set ::compteur(send_notice) 0
# Commande pour afficher le status du compteur
set ::compteur(cmd) "!compteur"
# Fichier où sauvegarder les données
set ::compteur(file) "compteur.db"
# Intervalle en secondes pour l'anti-flood (utilisation possible de la commande
# toute le X secondes maximum)
set ::compteur(anti_flood) 30
# --------------
if ![catch "open $::compteur(file)" fileID] {
array set compteur [gets $fileID]
close $fileID
}
set ::compteur(chanlist) [string tolower $::compteur(chanlist)]
set ::compteur(chanlist) [split $::compteur(chanlist)]
set ::compteur(num_chans) [llength $::compteur(chanlist)]
bind JOIN -|- "*" compteur_newjoin
bind time -|- "*0 * * * *" compteur_savefile
bind PUB -|- $compteur(cmd) compteur_pub
bind nick -|- "*" compteur_antiflood
proc compteur_newjoin {nick uhost handle channel} {
if {[lsearch -exact $::compteur(chanlist) [string tolower $channel]] == -1} {
return
}
if ![info exists ::compteur(joined,$nick,$channel)] {
set ::compteur(joined,$nick,$channel) [unixtime]
if [set ::compteur(send_notice)] {
putquick "NOTICE $nick :Vous êtes le [compteur_users $channel] ème visiteur de ce canal !"
}
}
}
proc compteur_savefile {minute hours day month years} {
if [catch "open $::compteur(file) w+" fileID] {
putlog "Compteur: $fileID"; return
}
puts $fileID [array get ::compteur "joined,*"]
close $fileID
}
proc compteur_users {channel} {
return [llength [array names ::compteur "joined,*,$channel"]]
}
proc compteur_pub {nick uhost handle channel arg} {
if {[lsearch -exact $::compteur(chanlist) [string tolower $channel]] == -1} {
return
}
if [info exists ::compteur(flood,$nick)] {
return
}
after [expr $::compteur(anti_flood) * 1000] [list compteur_afterantiflood $nick]
set ::compteur(flood,$nick) 1
putquick "PRIVMSG $channel :Actuellement [compteur_users $channel] utilisateurs différents sont entrés sur ce salon."
}
proc compteur_antiflood {nick uhost handle channel newnick} {
if [info exists ::compteur(flood,$nick)] {
set ::compteur(flood,$newnick) 1
after [expr $::compteur(anti_flood) * 1000] [list compteur_afterantiflood $newnick]
}
}
proc compteur_afterantiflood {nick} {
array unset ::compteur flood,[set nick]
}
putlog "Compteur TCL"
Ce tutoriel a été crée par : Maxou80
Sur : http://forum.celike.fr
Pour les tutoriels que vous copiez vous devez avoir l'autorisation !
# Liste des canaux où l'on doit activer le script (séparés par des espaces)
set ::compteur(chanlist) "#Salon"
# Afficher un message pour annoncer la place de l'utilisateur lorsqu'il rejoin ?
set ::compteur(send_notice) 0
# Commande pour afficher le status du compteur
set ::compteur(cmd) "!compteur"
# Fichier où sauvegarder les données
set ::compteur(file) "compteur.db"
# Intervalle en secondes pour l'anti-flood (utilisation possible de la commande
# toute le X secondes maximum)
set ::compteur(anti_flood) 30
# --------------
if ![catch "open $::compteur(file)" fileID] {
array set compteur [gets $fileID]
close $fileID
}
set ::compteur(chanlist) [string tolower $::compteur(chanlist)]
set ::compteur(chanlist) [split $::compteur(chanlist)]
set ::compteur(num_chans) [llength $::compteur(chanlist)]
bind JOIN -|- "*" compteur_newjoin
bind time -|- "*0 * * * *" compteur_savefile
bind PUB -|- $compteur(cmd) compteur_pub
bind nick -|- "*" compteur_antiflood
proc compteur_newjoin {nick uhost handle channel} {
if {[lsearch -exact $::compteur(chanlist) [string tolower $channel]] == -1} {
return
}
if ![info exists ::compteur(joined,$nick,$channel)] {
set ::compteur(joined,$nick,$channel) [unixtime]
if [set ::compteur(send_notice)] {
putquick "NOTICE $nick :Vous êtes le [compteur_users $channel] ème visiteur de ce canal !"
}
}
}
proc compteur_savefile {minute hours day month years} {
if [catch "open $::compteur(file) w+" fileID] {
putlog "Compteur: $fileID"; return
}
puts $fileID [array get ::compteur "joined,*"]
close $fileID
}
proc compteur_users {channel} {
return [llength [array names ::compteur "joined,*,$channel"]]
}
proc compteur_pub {nick uhost handle channel arg} {
if {[lsearch -exact $::compteur(chanlist) [string tolower $channel]] == -1} {
return
}
if [info exists ::compteur(flood,$nick)] {
return
}
after [expr $::compteur(anti_flood) * 1000] [list compteur_afterantiflood $nick]
set ::compteur(flood,$nick) 1
putquick "PRIVMSG $channel :Actuellement [compteur_users $channel] utilisateurs différents sont entrés sur ce salon."
}
proc compteur_antiflood {nick uhost handle channel newnick} {
if [info exists ::compteur(flood,$nick)] {
set ::compteur(flood,$newnick) 1
after [expr $::compteur(anti_flood) * 1000] [list compteur_afterantiflood $newnick]
}
}
proc compteur_afterantiflood {nick} {
array unset ::compteur flood,[set nick]
}
putlog "Compteur TCL"
Ce tutoriel a été crée par : Maxou80
Sur : http://forum.celike.fr
Pour les tutoriels que vous copiez vous devez avoir l'autorisation !
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|