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


Aide pour un script... simple ?
#1
Coucou !

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 Wrote:[...]
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 Wrote:[...]
Allooo~
Salut
Bonjour

Résultat :
Quote:<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é* :(
#2
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....

Quelle serait l'utilisation pratique du script?
#3
Bonsoir,

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.


tcl
# Rls: track_list.v1.0.tcl
# Date: 19/06/10
# Coded by: SaNcTuM
# Contact: #a.b.inner-sanctum@EFNET
###################################
 
bind PUB - -tlist SaNcTuM_tracks
 
set track_list "/home/user/test"
 
proc SaNcTuM_tracks {nick uhost hand chan text} {
    set number [lindex [split $text] 0]
    set filename ${::track_list}/${number}.log
    if {![file exists $filename]} {
        putquick "NOTICE $nick :log file not found."
        return
    }
 
    set tracks [open $filename]
    set data [split [read -nonewline $tracks] \n]
    close $tracks
    foreach log_info $data {
        putquick "NOTICE $nick :\00315$log_info"
    }
 }
 
putlog "log_list.v1.0 LOADED"


J'ai cherché sur plusieurs forums et sites de scripts TCL, et je n'ai rien trouvé d'autre. :(
#4
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 0
set 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 $fp
   if { [llength $data] > $::memnb } {
      set newlines [list [lrange $data $::memnb end]]
      foreach line $newline {
         putserv "PRIVMSG $chan :$line"
      }
      set $::memnb [llength $data]
   }
   return 1
}

Attention: le /n est en fait \n
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
#5
Merci CrazyCat mais le script ne fonctionne pas chez moi. :(

J'ai l'erreur en PL lorsque je tape !saylog :
Quote:Tcl error [log:say]: can't read "newline": no such variable

EDIT : J'utilise TCL 8.5, je sais pas si c'est à cause de ça.
#6
en accord avec la ligne :
tcl
set newlines [list [lrange $data $::memnb end]]

remplace :
tcl
foreach line $newline {

par :
tcl
foreach line $newlines {

Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#7
bonsoir

essaye en remplacent


tcl
foreach line $newline  {

par

tcl
foreach line $newlines  {

La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
#8
Ca marche !

Rolalala... Comment ai-je pu louper un truc pareil... :/

Est-ce possible de rajouter un timer (5min) pour que le eggdrop vérifie les nouvelles lignes et les affiches automatiquement sur 1 seul chan ?
#9
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"
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Demande] besoin d'aide pour finaliser berni13 6 1,567 18/11/2020, 00:18
Last Post: berni13
Big Grin demande d'aide pour codage KeeViiNou 4 4,569 04/07/2016, 07:55
Last Post: CrazyCat
  Modifier le script du trivia pour défiler les questions dans l'ordre Mimisth 2 3,468 05/12/2015, 19:45
Last Post: MisterS
  aide pour un script svp s2drk 3 4,993 11/08/2014, 23:23
Last Post: CrazyCat
  [Demande] Besoin d'aide pour youtubeURL.tcl hades_48 4 5,085 01/07/2014, 15:41
Last Post: hades_48
  [Résolu] aide script assign bouba89 3 5,562 11/11/2013, 16:00
Last Post: bouba89
  [Demande] aide pour une modification pour whois loulou7593 21 13,273 29/10/2013, 13:35
Last Post: loulou7593
  aide pour le script Nostromo1st 13 8,142 16/09/2013, 16:24
Last Post: Nostromo1st
  [aide] comment rajouter des hosts et des salons en plus pour sajoin Naruto 11 7,684 17/07/2013, 22:51
Last Post: aliasangelius
  Script pour afficher la date à une heure donnée (ephemeride) conscience 13 9,315 04/06/2013, 21:29
Last Post: aliasangelius

Forum Jump:


Users browsing this thread: 1 Guest(s)