18/07/2020, 19:02
Bonjour,
Je souhaite créer un tcl d'annonce où un utilisateur puisse renseigner un message et que ce message soit dit par l'eggdrop toutes les X minutes.
J'ai commencé à faire ça :
tcl set fichier "/home/shell/scripts/annonce.txt"
set canal "#salon"
set fi [open $fichier "r"]
set phrases [split [read -nonewline $fi] "\n"]
close $fi
bind time - "*0 * * * *" randlecture
bind time - "*30 * * * *" randlecture
proc randlecture {mm hh dd mo yy} {
set laphrase [lindex $::phrases [rand [llength $::phrases]]]
putserv "PRIVMSG $::canal :$laphrase"
}
bind pub - "!addpub" add:news
proc add:news {n ht hd ch a} {
set news [lrange $a 0 end]
if {$ch == "#Radio_US-Route66"} {
if {$news == ""} {putspeed "notice $n :Syntaxe => !addpub < message >"; return}
if {![file exists "scripts/annonce.txt"]} {set files [open "scripts/annonce.txt" a+]; close $files}
# enregistrement de la news #
set num [expr {int(rand() * 37)}]
set files [open "scripts/annonce.txt" a+]
puts $files "$num $n $news"
close $files
putspeed "notice $n :News enregistré et validé"
} else {
putspeed "notice $n :Erreur Salon"
} }
Le tcl se lance, mais quand je souhaite renseigner un message, rien dans le fichier...
salut,
il faut peut etre que tu "ADDphrase" dans le fichier . (ajout d'un bind donc.
Afin de verifier s'il lit bien le fihichier , ecrit deja une phrase test voir s'il la donne sur " #salon"
Cordilament.
(18/07/2020, 20:44)cestlemien Wrote: salut,
il faut peut etre que tu "ADDphrase" dans le fichier . (ajout d'un bind donc.
Afin de verifier s'il lit bien le fihichier , ecrit deja une phrase test voir s'il la donne sur " #salon"
Cordilament.
Je l'ai fais Quote:<+SmoothBOT> Bonjour et bienvenue ! Je suis le test depuis le ftp.
et juste avant : Quote:<~Datura> !addpub Ici c'est les meilleurs et la bas c'est les plus nuls !
<Notice> de SmoothBOT annonce enregistrée
il nous manque donc beaucoup du dit tcl, si tu le mettais complet, peut etre pourrions nous voir si il y a des erreurs ( le bot a bien des droits en eciture sur le ftp/shell ? )
Salut, merci pour tes réponses, j'avais un souci dans l'enregistrement du tcl ! au niveau du news qui aurait du devenir pub xD
J'imagine que ce que tu nous présente ici est incomplet, mais j'ai des incompréhensions:
tcl proc add:news {n ht hd ch a} {
set news [lrange $a 0 end]
if {$ch == "#Radio_US-Route66"} {
if {$news == ""} {putspeed "notice $n :Syntaxe => !addpub < message >"; return}
if {![file exists "scripts/annonce.txt"]} {set files [open "scripts/annonce.txt" a+]; close $files}
# enregistrement de la news #
set num [expr {int(rand() * 37)}]
set files [open "scripts/annonce.txt" a+]
puts $files "$num $n $news"
close $files
putspeed "notice $n :News enregistré et validé"
} else {
putspeed "notice $n :Erreur Salon"
}
}
Vu que c'est pour faire du append (ouverture du fichier en a+), quel est l'intérêt de ta vérification de l'existence du fichier ? Il sera de toutes manières créé.
Et quel intérêt d'utiliser putspeed (qui n'est pas une commande native si j'ai bonne mémoire) alors que tu as 4 tampons de sortie qui te permettent de choisir ta vitesse ?
Autre point: à quoi te sert ce $num en début de ligne enregistrée ?
Donc là, tu affiches ce qui est dans ton fichier, c'est à dire le numéro aléatoire que tu as inscris, le pseudo de celui qui a ajouté la pub et le texte ? J'ai toujours du mal à comprendre ce numéro bizarre.
(19/07/2020, 16:33)CrazyCat Wrote: J'imagine que ce que tu nous présente ici est incomplet, mais j'ai des incompréhensions:
tcl proc add:news {n ht hd ch a} {
set news [lrange $a 0 end]
if {$ch == "#Radio_US-Route66"} {
if {$news == ""} {putspeed "notice $n :Syntaxe => !addpub < message >"; return}
if {![file exists "scripts/annonce.txt"]} {set files [open "scripts/annonce.txt" a+]; close $files}
# enregistrement de la news #
set num [expr {int(rand() * 37)}]
set files [open "scripts/annonce.txt" a+]
puts $files "$num $n $news"
close $files
putspeed "notice $n :News enregistré et validé"
} else {
putspeed "notice $n :Erreur Salon"
}
}
Vu que c'est pour faire du append (ouverture du fichier en a+), quel est l'intérêt de ta vérification de l'existence du fichier ? Il sera de toutes manières créé.
Et quel intérêt d'utiliser putspeed (qui n'est pas une commande native si j'ai bonne mémoire) alors que tu as 4 tampons de sortie qui te permettent de choisir ta vitesse ?
Autre point: à quoi te sert ce $num en début de ligne enregistrée ?
Donc là, tu affiches ce qui est dans ton fichier, c'est à dire le numéro aléatoire que tu as inscris, le pseudo de celui qui a ajouté la pub et le texte ? J'ai toujours du mal à comprendre ce numéro bizarre.
Merci pour ta réponse. Pour le putspeed, j'ai un message d'erreur sinon...
Je dois t'avouer que j'ai recupéré ce codage d'un tcl de news et j'essaie de le modifier. C'est peut-être idiot...
J'ai modifié le code qui est le suivant maintenant :
tcl set fichier "/home/D//shell/scripts/annonce.db"
set canal "#salon"
set fi [open $fichier "r"]
set phrases [split [read -nonewline $fi] "\n"]
close $fi
bind time - "*01 * * * *" randlecture[b] <= ici c'est bien l'annonce devrait être lue toute les minutes mais j'ai rien, même au bout d'une minute[/b]
proc randlecture {mm hh dd mo yy} {
set laphrase [lindex $::phrases [rand [llength $::phrases]]]
putserv "PRIVMSG $::canal :$laphrase"
}
bind pub - "!addpub" add:pub
proc add:pub {n ht hd ch a} {
set pub [lrange $a 0 end]
if {$ch == "#smoothoff"} {
if {$pub == ""} {putspeed "notice $n :Syntaxe => !addpub < message >"; return}
if {![file exists "scripts/annonce.db"]} {set files [open "scripts/annonce.txt" a+]; close $files}
# enregistrement de la news #
set num [expr {int(rand() * 37)}]
set files [open "scripts/annonce.db" a+]
puts $files "$n $pub"
close $files
putspeed "notice $n :Annonce enregistre"
} else {
putspeed "notice $n :Erreur Salon"
} }
J'aimerai également y mettre un petit système de sécurité sous forme de flag. J'ai tenté de mettre ça :
mais j'ai pour erreur "proc add:pub {n ht hd ch a} {"
J'ai donc modifié en mettant nick host hand chan arg mais rien...
Merci pour votre aide, soyez indulgent :p
Je ne pense pas que ton erreur soit proc add:pub {n ht hd ch a} {, copie texto ce que dit l'eggdrop.
Et utilise .set errorInfo pour afficher plus d'infos (cf ce post fort intéressant)
Retrouvez les dernières versions de mes scripts TCL et bien plus sur ma page GitHub
|