Après moulte recherche sur le net à la recherche d'un petit script sans résultat, j'en viens à votre aide.
Je recherche donc un moyens d'afficher sur 1 chan le résultat de 1 fichier texte. Mais le bot doit afficher uniquement LA / LES nouvelles entrées !
exemple du fichier du texte.txt :
texte.txt a écrit :[...]
Allooo~
Salut
Maintenant si j'ajoute la ligne "Bonjour" le bot va détecter cette nouvelle ligne et l'afficher sur le chan. Sans afficher l'ancien texte Alloo~ et Salut :
texte.txt a écrit :[...]
Allooo~
Salut
Bonjour
Résultat :
Citation :<Eggdrop> Bonjour
Pour résumer, le bot va donc lire le fichier toutes les xx secondes pour vérifier si oui ou non de nouvelles lignes ont été ajoutées et donc afficher si oui ou non les lignes en question sur le channel.
Si quelqu'un veut bien venir à mon secours... *désespéré*
Si les lignes restent toujours dans le même ordre et ne sont pas identiques ça devrait être plutôt simple: il suffit alors de lire le fichier, et un backup fait plus tôt, ligne à ligne et comparer le contenu des deux.
Si les lignes sont identiques, on continue,
et si les lignes sont différentes, on l'affiche celle du fichier de base & on passe à la suivante.
Ca devrait pouvoir se faire simplement en C ou en TCL
Le pb par contre serait que par exemple si à un moment on venait à changer l'ordre des lignes, l'eggdrop risque de relire toutes les lignes....
Tout d'abord merci de porter ton attention à ce sujet Artix,
Alors pour être plus explicite, le but est de lire un petit fichier de journalisation (log) toutes les 10 minutes et donc d'afficher le résultat sur un seul chan automatiquement. ^^
J'ai peut être trouvé une piste sur un vieux topic egghelp. Mais j'avoue ne pas comprendre grand chose au TCL, j'ai donc modifié à peu prêt comme je pouvais mais ça ne marche pas vraiment.
S'il s'agit d'un fichier de log, les lignes sont toujours dans le même ordre et le nombre est uniquement croissant (en fonctionnement normal).
Le moyen le plus simple pourrait être de mémoriser le nombre de lignes et à chaque lecture du fichier de comparer le nouveau nombre. S'il est supérieur au précédent, on affiche les nouvelles lignes.
tcl
set memnb 0set logfile "/path/to/file"
bind pub - !saylog log:say
proc log:say { nick uhost handle chan args }{set fp [open$::logfile]set data [split[read -nonewline $fp] /n]close$fpif{[llength$data]>$::memnb}{set newlines [list[lrange$data$::memnb end]]foreach line $newline{
putserv "PRIVMSG $chan :$line"}set$::memnb[llength$data]}return1}
Au lieu de faire un bind pub, utilises un bind time.
Si je préconise ça, c'est parce que bientôt eggdrop gèrera le bind CRON où tu pourras utiliser : "*/5 * * * *" pour dire "toutes les 5 minutes"