Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous je recherche de l'aide pour mettre en oeuvre un tcl très précis mais très simple à priori pour les habitués
J'explique le principe : en privé avec le bot on ajoute un souhait (exemple !add Reunion.le15.01 moimeme)
cette commande est retranscrite dans un chan particulier (exemple : moimeme demande Reunion.le15.01 le 12/01/14)
et je souhaiterais avoir une fonction recherche (exemple dans un chan différent : !find reunion ) résultat envoyé en pv à l'utilisateur mais il faudrait que cela filtre les résultats pour ne pas me retrouver avec tous les résultats.
Donc il y aurait automatiquement une BDD interne en txt ou autre mais pas de sql ou sqlite
On m'a aidé à faire un bout de code (mais pas accompli ) pourriez vous m'aider svp ?
Voici quand même la partie de code qui a été faite :
Code: TCL
set base "/home/xxx/news.txt"
bind msg - !add news:sent
proc news:sent {nick uhost handle chan text} {
set fp [open $::base a]
puts $fp "[clock format [clock seconds] -format "%d/%m/%y"] $nick $text"
close $fp
putserv "NOTICE $nick :\00312Votre news a été enregistrée"
putserv "PRIVMSG #Aide :\00312Add News : \0034$nick $text"
}
bind msg - !find recherche
proc recherche { nick uhost handle chan args } {
catch {open $::base r} db
while {![eof $db]} {
gets $db ligne
if {$ligne != ""} {
if {[regexp $ligne $args]} {
putserv "NOTICE $nick :$ligne $args"
}
}
}
}
putlog "example 1.0 loaded"
bonne journée à tous
Hors ligne
Hello.
Code: TCL
set base "/home/xxx/news.txt"
Code: TCL
set fp [open $::base a]
Il y a une erreur ici, tu set une variable "locale", mais tu l'appelle en "global".
Soit tu :
Code: TCL
set ::base "/home/xxx/news.txt"
...
set fp [open $::base a]
Ou
Code: TCL
set base "/home/xxx/news.txt"
...
global base
set fp [open $base a]
Mais ne mélange pas les deux.
Hors ligne
Merci de m'avoir corriger ce petit souci mais une idée aussi pour la fonction recherche ?
Hors ligne
Tu la possède déjà. Non ?
Hors ligne
La recherche actuelle renvoie tous les résultats donc il faudrait justement filtrer.
Hors ligne
Hello.
Code: TCL
set base "/home/xxx/news.txt"Code: TCL
set fp [open $::base a]Il y a une erreur ici, tu set une variable "locale", mais tu l'appelle en "global".
Soit tu :Code: TCL
set ::base "/home/xxx/news.txt" ... set fp [open $::base a]Ou
Code: TCL
set base "/home/xxx/news.txt" ... global base set fp [open $base a]Mais ne mélange pas les deux.
Ah bon ? Quel est le problème ? global permet d'accèder localement à une variable globale, qui est aussi accessible par $::variable. On peut mélanger les deux sans soucis.
Et la recherche actuelle, elle ressort toutes les lignes si le paramètre de recherche est vide, sinon elle semble retourner la ou les lignes qui contient exactement ce qui est passé en argument. Il faudrait peut-être un log exemple pour voir s'il y a une erreur.
Hors ligne
Pages : 1