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:
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:
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"
}
}