CrazyCat j'ai suivi tes conseils et comme dit plus haut je n'ai aucun message d'erreur en PL mais rien ne fonctionne d'ou le faite que je ne sais absolument pas comment régler la chose.
J'ai aussi changer les putquick en putlogs et les bind pubm en bind pub.
Malgré tous ces changement cela ne fonctionne pas et je n'ai toujours aucun message d'erreur en PL.
Franchement je ne sais pas quoi faire ...
As-tu fait un .rehash
A la fin de ton tcl tout en bas rajoute ceci :
TCL
putlog "test chargé !"
Peut-tu montré les modifications que tu à apporter.
Et en PL de ton eggdrop, peut-tu tapez la commande : .channels
Pour qu'ont puisse voir certaines choses merci d'avance.
set vhostjoinpart "*@faucheur.enjoy-tchat.fr"
########################### Liste des commandes ###########################
#Ajout/suppression d'un salon pour le robot
bind pub - !oust unassign
proc unassign {nick host hand chan text}{global botnick unassign vhostjoinpart
# on crée $cleave qui est le canal à quitterset cleave [join[lrange[split$text]00]]if{[validchan $cleave]}{
# le canal cible est valide, on le retire
channel remove $cleaveforeach pseudo $vhostjoinpart{
putquick "NOTICE $pseudo:Je suis bien partie de $cleave"}}else{
putserv "NOTICE $nick :Je ne connais pas le canal $cleave"}}
bind pub - !vien assign
proc assign {nick host hand chan text}{global botnick assign vhostjoinpart
# on crée $cjoin qui est le canal à rejoindreset cleave [join[lrange[split$text]00]]
channel add $cleaveforeach pseudo $vhostjoinpart{
putquick "NOTICE $pseudo: $botnick a bien été atribué au salon $cleave"}}
J'ai rechercher sur le forum, comme je n'es pas travaillé énorme sur les vhost, j'espère que ça va fonctionner !
08/11/2016, 14:22 (Modification du message : 08/11/2016, 14:23 par CrazyCat.)
La réponse d'alias est à peu près juste dans le sens où il utilise correctement le foreach.
Le script que j'ai corrigé est presque bon, j'ai volontairement laissé l'erreur qui bloque le système, à savoir:
tcl
foreach vhost [array names $::vhostjoinpart]{
Pourquoi array names dans une simple liste ? La solution est juste de parcourir la liste:
tcl
foreach vhost $::vhostjoinpart{
Voici un mini-script de vérification du fonctionnement:
tcl
set vhostjoinpart {*@faucheur.enjoy-tchat.fr
}proc test1 {host}{foreach vhost $::vhostjoinpart{if{[string match -nocase $vhost$host]}{puts"Matched $host against $vhost"}else{puts"failed $host against $vhost"}}}proc test2 {host}{foreach vhost [array names $::vhostjoinpart]{if{[string match -nocase $vhost$host]}{puts"Matched $host against $vhost"}else{puts"failed $host against $vhost"}}}puts"Test 1:"
test1 "user@blabla.com"
test1 "roger@faucheur.enjoy-tchat.fr"
test1 "berthe@Faucheur.Enjoy-Tchat.fr"puts"Test 2:"
test2 "user@blabla.com"
test2 "roger@faucheur.enjoy-tchat.fr"
test2 "berthe@Faucheur.Enjoy-Tchat.fr"
Et le résultat:
Code :
crazycat@raspian:~ $ tclsh foreach.tcl
Test 1:
failed user@blabla.com against *@faucheur.enjoy-tchat.fr
Matched roger@faucheur.enjoy-tchat.fr against *@faucheur.enjoy-tchat.fr
Matched berthe@Faucheur.Enjoy-Tchat.fr against *@faucheur.enjoy-tchat.fr
Test 2:
crazycat@raspian:~ $
Donc j'ai copié ton code aliasangelius fonctionne très bien :D
Maintenant je vais étudier le code et le décortiquer pour bien comprendre celui-ci tout en m'aidant du wiki.
Merci à vous deux pour votre aide. :)