[Résolu] aide script assign
#1
bonsoir a tous

je viens demandé un peu d'aide car j'ai realisé un petit bout de code en tcl mai ce dernier ne fonctionne pas tout a fait comme je le voudrais

quand je tape !unassign #salon sur le salon #test pour quitter un salon ou le bot est aussi connecter ben celui ci part du salon ou je tape la commande au lieu de part sur le salon que j'ai specifier.

voici le code :

Code :
set nom_robot "***"
set salon_robot "#test"
set password_robot "*****"
set owner "monpseudo"


#########################
## Liste des commandes ##
#########################

#Ajout/suppression d'un salon pour le robot
bind pub - !unassign unassign
proc unassign {nick host hand chan text} {
    global botnick unassign owner
        foreach pseudo $owner {
if {[validchan $chan]}
        channel remove $chan
        set chan [join [lrange [split $text] 0 0]]
        putquick "NOTICE $owner :Je suis bien partie de $chan"
        }
}

bind pub - !assign assign
proc assign {nick host hand chan text} {
    global botnick assign owner
    foreach pseudo $owner {
        set chan [join [lrange [split $text] 0 0]]
        channel add $chan
        putquick "NOTICE $owner : $botnick a bien été atribué au salon $chan "
        }
}


Cordialement
Répondre Avertir
#2
Tu as inversé deux lignes, tu fais d'abord un channel remove $chan, avec $chan qui est le canal où la commande a été tapée, et ensuite tu affectes à $chan l'argument de la commande.

Tu devrais utiliser des variables distinctes pour mieux voir l'erreur:
tcl
set nom_robot "***"
set salon_robot "#test"
set password_robot "*****"
set owner "monpseudo"

 
#########################
## Liste des commandes ##
#########################

#Ajout/suppression d'un salon pour le robot
bind pub - !unassign unassign
proc unassign {nick host hand chan text} {
   global botnick unassign owner
   # on crée $cleave qui est le canal à quitter
   set cleave [join [lrange [split $text] 0 0]]
   foreach pseudo $owner {
      if {[validchan $cleave]}
        channel remove $cleave
        putquick "NOTICE $owner :Je suis bien partie de $cleave"
     }
}
 
bind pub - !assign assign
proc assign {nick host hand chan text} {
    global botnick assign owner
   # on crée $cjoin qui est le canal à rejoindre
    set cleave [join [lrange [split $text] 0 0]]
    foreach pseudo $owner {
        channel add $cleave
        putquick "NOTICE $owner : $botnick a bien été atribué au salon $cleave"
        }
}



Et il y a une autre erreur de logique dans ton script: tu boucles sur les owners pour les prévenir, ok, mais tu fais le channel add/remove dans cette boucle. Donc tu le fais autant de fois qu'il y a un owner ?

Voici ce que je ferai plutôt:
tcl
set nom_robot "***"
set salon_robot "#test"
set password_robot "*****"
set owner "monpseudo"

 
#########################
## Liste des commandes ##
#########################

#Ajout/suppression d'un salon pour le robot
bind pub - !unassign unassign
proc unassign {nick host hand chan text} {
   global botnick unassign owner
   # 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 $owner {
         putquick "NOTICE $pseudo:Je suis bien partie de $cleave"
      }
   } else {
      putserv "NOTICE $nick :Je ne connais pas le canal $cleave"
   }
}
 
bind pub - !assign assign
proc assign {nick host hand chan text} {
    global botnick assign owner
   # on crée $cjoin qui est le canal à rejoindre
    set cleave [join [lrange [split $text] 0 0]]
    channel add $cleave
    foreach pseudo $owner {
        putquick "NOTICE $pseudo: $botnick a bien été atribué au salon $cleave"
     }
}


Répondre
#3
merci de ta reponse CraZyCat je vai regarder de plus pres tout ce que tu m'as dit Smile
Répondre Avertir
#4
CrazyCat pourrait mettre en resolu le sujet s'il te plait

merci de ton aide Smile
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté