Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Compteur de mots
#1
Bonjour,
Ayant decider de reprendre legerement le TCL, j'avais pour idée de faire un "compteur de mots" hors je ne voit pas du tout comment faire, même après recherche dans le forum (ou alors je suis pas doué).

Plus l'utilisateur parle sur un salon, plus sa augmente sont compteur de mots dans une base de donnée (non defini) par salon.

Via une commande du style "!mots pseudo" le robot effectuerais une requete afin de me sortir le total des mots que l'utilisateur à dit sous la forme suivante:
"!mots blabla"
> Blabla Xmots sur #chan1
> Blabla Wmots sur #chan2


Je m'excuse d'avance pour l'orthographe.
Merci aux gens qui prenne la peine de lire le sujet
#2
Il te faut d'abord définir ta base, ou du moins sur quoi elle sera faite (fichier, MySQL, SQLite, ...).
Si c'est une base de type MySQL, une structure simple peut suffire:

Code:
nick => varchar(32),
chan => varchar(50),
compteur => bigint(8),
UNIQUE KEY (nick, chan)
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#3
Yep Heretoc,

Comment vas-tu depuis le temp poto ?
Tien regarde si ceci peut t'aider ou pas : stats
#4
J"ai regarder mais j'aimerais créer un code beaucoup plus "simpliste"
PS: je vais bien mais ce n'est pas forcement le lieu pour parler de cela
#5
salut,

pour faire une structure simple
en tcl, je te conseil d utiliser la commande "dict" avec un array
par exemple:

tcl
bind pubm - * stat:incr
proc stat:incr {nick host hand chan arg} {
  variable stat
  set $chan [string tolower $chan]
  if ![info exists stats($nick)] {
    set stat($nick) [dict create]
  }
  dict incr stat($nick) $chan [llength $arg]
}
 
bind pub - !mots stat:return
proc stat:return {nick host hand chan arg} {
  variable stat
  set pseudo [lindex $arg 0]
  if [info exists stats($pseudo)] {
    foreach list [dict get $stat($pseudo)] {
      putserv "PRIVMSG $chan :$pseudo à dit [lindex $list 1] sur [lindex $list 0]"
    }
  } else {
    putserv "PRIVMSG $chan :$pseudo inconnu"
  }
}

avec un "bind save" pour sauvegarder toutes les heures dans un fichier ou sur une base sql (au choix)

edit: ne pas oublier de charger le fichier (ou la base de donnée sql) au chargement du tcl
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#6
Daccord, merci de toutes ces indications, je vais faire surement en SQL afin de pouvoir si le coeur m'en dit retransmettre facilement les informations sur une page internet.
Juste est-il possible d'avoir une explication sur le "dict" car j'ai pas forcement compris sont fonctionnement à partir du wiki : http://wiki.eggdrop.fr/Dict
#7
c'est une manière différente de gérer une variable en fait.
en gros la ta variable stat(pseudo) contiendra
"#salon1 35 #salon2 12 salon3 50"
si tu fais
tcl
dict get $stat(pseudo) #salon2

ça te retournera la valeur associée donc 12
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#8
Daccord, merci de la precision
#9
heretoc Wrote:Daccord, merci de toutes ces indications, je vais faire surement en SQL afin de pouvoir si le coeur m'en dit retransmettre facilement les informations sur une page internet.
Juste est-il possible d'avoir une explication sur le "dict" car j'ai pas forcement compris sont fonctionnement à partir du wiki : http://wiki.eggdrop.fr/Dict

Attention, en passant par SQL, le système de comptage sera différent. En te basant sur ma structure de base initiale, il te faudra 2 requètes chaque fois (un select et un replace/insert).
Alors qu'avec du tcl pur et dict, ça se fait en une passe et c'est autonome.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#10
rien n’empêche d'utiliser dict et de sauvegarder la table sql toutes les X minutes, plutôt que de sauvegarder chaque changement.
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Demande] API JSON compteur utilisateurs bodtx 11 3,772 30/05/2019, 19:14
Last Post: bodtx
  revenir sur sujet fermé (compteur de kick) Yakka 5 5,199 26/09/2014, 08:49
Last Post: CrazyCat
  Compteur join Yakka 9 5,704 21/09/2014, 15:51
Last Post: Yakka
  Cherche un Tcl qui réagit a des mots KeeViiNou 4 4,387 28/09/2012, 15:10
Last Post: KeeViiNou
  Detection des mots Interdits Ryan 1 3,910 21/09/2012, 22:15
Last Post: CrazyCat
  [Recherche] Jeu : mots le plus long heretoc 2 3,854 08/09/2009, 18:07
Last Post: heretoc

Forum Jump:


Users browsing this thread: 1 Guest(s)