Communauté Eggdrop
Demande d'information - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : Demande d'information (/showthread.php?tid=968)



Demande d'information - heretoc - 07/06/2011

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.


RE: Demande d'information - MenzAgitat - 07/06/2011

lrange retourne une liste donc tu dois la retransformer en string simple :
tcl
set cible [join [lrange $arg 2 end]]





RE: Demande d'information - CrazyCat - 07/06/2011

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 !


RE: Demande d'information - djkenny - 07/06/2011

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



RE: Demande d'information - CrazyCat - 07/06/2011

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.


RE: Demande d'information - heretoc - 07/06/2011

Daccord, merci c'etait donc une erreur stupide de la nuit ^^
Merci pour les informations.


RE: Demande d'information - MenzAgitat - 07/06/2011

elle a bon dos la nuit :p


RE: Demande d'information - heretoc - 07/06/2011

Tout à fait Very Happy


RE: Demande d'information - djkenny - 07/06/2011

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