Demande d'information
#1
Bonsoir,
J'ai dans mon eggdrop un code TCL pour sajoin les utilisateurs via la commande "!saj #salon" mais malheuresement elle ne marche pas, en effet au lieu de sajoin il me met les salons entre deux accolades " { et } "

Quand je fait "!saj #staff" voici ce que j'ai en partyline:
(Debug - Clams) :irc.****.fr 403 Clams {#staff} :No such channel

Voici m'a procédure de sajoin:
TCL
	set pseudo [lindex $arg 1]    
	set cible [lrange $arg 2 end]
	putdcc $::clams(idx) ":[clams:server] SAJOIN $pseudo $cible"



Par contre si j'ajoute un salon prédefini dans le code tel que #irc cela sajoin correctement:
TCL
	set pseudo [lindex $arg 1]    
	putdcc $::clams(idx) ":[clams:server] SAJOIN $pseudo #irc"



Donc si quelqu'un pourais m'expliquer pourquoi les salons sont de la forme {#salon} cela serais bien sympatique.
Répondre
#2
lrange retourne une liste donc tu dois la retransformer en string simple :
TCL
set cible [join [lrange $arg 2 end]]


Répondre Avertir
#3
Voyons voyons... Je vais commencer par lire la documentation sur lrange et surprise:
Citation :Cette commande renverra une nouvelle liste consistant des éléments premier à dernier
Ah ben oui, c'est une liste, donc entre accolades.

Conclusion:
TCL
set cible [join [lrange $arg 2 end]]



EDIT: Arf, grilled par MenzAgitat !
Répondre
#4
salut,

en réalité c est dû au # du nom de salon
Code :
% set a [list 1 2 3 4 5 6 7 8] ; lrange $a 1 4
2 3 4 5

% set a [list #1 #2 #3 #4 #5 #6 #7 #8] ; lrange $a 1 4
{#2} #3 #4 #5
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#5
Oui, c'est vrai pour tous les caractères spéciaux (#, {, }, [, ], ...).
Quoi qu'il en soit, le mieux est de toujours utiliser join quand on extrait un élément de liste.

La rigueur dans l'écriture du code permet d'éviter beaucoup d'erreurs.
Répondre
#6
Daccord, merci c'etait donc une erreur stupide de la nuit ^^
Merci pour les informations.
Répondre
#7
elle a bon dos la nuit :p
Répondre Avertir
#8
Tout à fait Very Happy
Répondre
#9
CrazyCat a écrit :Oui, c'est vrai pour tous les caractères spéciaux (#, {, }, [, ], ...).
Quoi qu'il en soit, le mieux est de toujours utiliser join quand on extrait un élément de liste.

La rigueur dans l'écriture du code permet d'éviter beaucoup d'erreurs.

pas faux mais # est un cas vraiment particulier, il n'est entouré de {} que lorsqu'il est le 1 caractère de la ligne de retour et ceux pour la simple raison de le distinguer d'un commentaire

Code :
% set a [list #1 #2 #3 #4 #5 #6 #7 #8] ; lrange $a 1 4
{#2} #3 #4 #5
% set a [list 1#1 1#2 1#3 1#4 1#5 1#6 1#7 1#8] ; lrange $a 1 4
1#2 1#3 1#4 1#5
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir


Atteindre :


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