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


TCL annonce
#1
Question 
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...
  Répondre
#2
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.
  Répondre
#3
(18/07/2020, 20:44)cestlemien a écrit : 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
Citation :<+SmoothBOT> Bonjour et bienvenue ! Je suis le test depuis le ftp.
et juste avant :
Citation :<~Datura> !addpub Ici c'est les meilleurs et la bas c'est les plus nuls !
<Notice> de SmoothBOT annonce enregistrée
  Répondre
#4
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 ? )
  Répondre
#5
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
  Répondre
#6
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 ?
tcl
proc randlecture {mm hh dd mo yy} {
  set laphrase [lindex $::phrases [rand [llength $::phrases]]]
  putserv "PRIVMSG $::canal :$laphrase"
}


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.
  Répondre
#7
(19/07/2020, 16:33)CrazyCat a écrit : 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 ?
tcl
proc randlecture {mm hh dd mo yy} {
  set laphrase [lindex $::phrases [rand [llength $::phrases]]]
  putserv "PRIVMSG $::canal :$laphrase"
}


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 :
tcl
if {[matchattr $hand 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
  Répondre
#8
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)
  Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Crontab d'annonce samdine62 3 821 17/03/2020, 10:59
Dernier message: CrazyCat
  Annonce X minutes lesny 14 6,298 25/11/2011, 18:03
Dernier message: CrazyCat
  Petit soucis avec un script d'annonce de la saint du jour, etc... loulou7593 3 4,938 19/11/2011, 14:53
Dernier message: CrazyCat
  Annonce lancement de jeux Darfus 5 4,451 01/07/2011, 20:00
Dernier message: aliasangelius
  bannir une annonce a repetiton bewess 5 4,091 18/10/2009, 09:30
Dernier message: bewess
  Kickban Annonce a repetition bewess 0 3,252 12/05/2008, 09:02
Dernier message: bewess

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)