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


[Résolu] Aide sur une commande
#16
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 ...
#17
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.
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#18
alors voici le putlog

Code:
[18:20:01] «Thor» [18:19:57] test chargé !
le code

tcl
set vhostjoinpart {
  *@faucheur.enjoy-tchat.fr
}
 
 
bind pub - !vien vien
bind pub - !oust oust
 
proc vien { nick host hand channel arg } {
 global vhostjoinpart vien
 set chan [lindex $arg 0]
 foreach vhost [array names $::vhostjoinpart] {
   if {[string match -nocase $vhost $host]} {
     putlogs "privmsg #lm-staff :\00312Ok, \0037$nick \00312! je rejoins \0034$chan"
     channel add $chan
     savechannels
    }
  }
  return
}
 
proc oust { nick host hand channel arg } {
 global vhostjoinpart oust
 set chan [lindex $arg 0]
 foreach vhost [array names $::vhostjoinpart] {
   if [string match -nocase $vhost $host] {
     putlogs "privmsg #lm-staff :\00312Ok, \0037$nick \00312! je part de \0034$chan"
     channel remove $chan
     savechannels
     }
  }
  return
}
 
putlog "test chargé !"

et le .channel

Code:
[18:28:46] «Thor» [18:28:42] #AngeDesOm# (#LinuxMint) channel
[18:28:46] «Thor» Canal #LinuxMint, 4 members, mode +trn:
[18:28:46] «Thor» Sujet du canal: [Linux Mint] Bienvenue sur le salon d'entraide dédié à Linux Mint. Pour connaître les commandes tapez !cmd Forum francophone dédié à Linux Mint ==> https://www.forum-francophone-linuxmint.fr/
[18:28:46] «Thor» (n = owner, m = master, o = op, d = deop, b = bot)
[18:28:46] «Thor»  NICKNAME      HANDLE     JOIN  IDLE  USER@HOST
[18:28:46] «Thor» @Thor          *         18:27       <- it's me!
[18:28:46] «Thor»  AngeDesOmbres AngeDesOm  ---  N      Ange@Faucheur.EnjOy-Tchat.fr
[18:28:46] «Thor»  rodrigue7000  *          ---         ~rodrigue7@EnjOy-TchaT-C0A70CF9.dynamic.voo.be
[18:28:46] «Thor» @Tux           *          ---         Gardien@tchat-discut.fr
[18:28:46] «Thor» Fin de renseigements du canal.
#19
Je te montre vite fait comment faire un debug, en modifiant ta procédure "vien":

tcl
proc vien { nick host hand channel arg } {
   global vhostjoinpart vien
   putlog "Bind vien déclenché"
   set chan [lindex $arg 0]
   putlog "Canal visé: $chan"
   foreach vhost [array names $::vhostjoinpart] {
      putlog "Test: $host vs $vhost"
      if {[string match -nocase $vhost $host]} {
         putlog "privmsg #lm-staff :\00312Ok, \0037$nick \00312! je rejoins \0034$chan"
         channel add $chan
         savechannels
      } else {
         putlog "Pas bon"
      }
   }
   return
}


Au moins, tu verras exactement ce qui se passe dans ton script.

Et note que si tu utilises global, tu n'as pas besoin d'utiliser $::, et vice-versa.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#20
(07/11/2016, 18:14)aliasangelius Wrote: Et en PL de ton eggdrop, peut-tu tapez la commande : .channels

tu as oublié le "s", La sa te retourne qu'un seul salon.

Et fait la modification que Crazy ta faite, sa va permettre de mieux situé le problème.
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#21
CrazyCat j'ai donc mis ton code j'ai bien e des retours en PL

Code:
19:09:57] «Thor» [19:09:53] Bind vien déclenché
[19:09:57] «Thor» [19:09:53] Canal visé: #Test
donc si je lie bien et comprend bien mon problème vien au niveau du foreach ?
#22
A priori, oui: il ne passe pas dans ton foreach.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#23
Bonjour :)

En faisant ainsi :


tcl
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 à quitter
   set cleave [join [lrange [split $text] 0 0]]
   if {[validchan $cleave]} { 
      # le canal cible est valide, on le retire
      channel remove $cleave
      foreach 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 à rejoindre
    set cleave [join [lrange [split $text] 0 0]]
    channel add $cleave
    foreach 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 !
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#24
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:~ $
On voit bien que array names ne ramène rien.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#25
Oh ! Donc si je comprend bien, sa ramène une liste vide dans le cas présent actuel.
Ce qui donne la possibilité (d'obtenir une chaine vide).

Si je comprend bien ton code, ainsi que son explications ci dessus.
J'ai pas penser à vérifier sur le wiki :(

Donc voilà la solution niquel ;)

Maintenant il à toutes les infos pour le fonctionnement c'est good.
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#26
Salut,

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. :)

Bye.
#27
Ravis d'avoir pu t'aider :)
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll


Possibly Related Threads…
Thread Author Replies Views Last Post
  aide pour une commande de ban loulou7593 4 5,231 17/12/2011, 02:06
Last Post: loulou7593
  [aide] trivia.tcl, commande !stop inactive blackdevil 3 4,075 19/04/2010, 01:52
Last Post: sebastien
  Aide/Explications pour créer une commande heretoc 20 11,709 24/02/2009, 17:46
Last Post: heretoc

Forum Jump:


Users browsing this thread: 1 Guest(s)