Démonstration
Dans cet exemple, on voit que les modes Q et S sont complètement ignorés par getchanmode.
Voici donc une méthode alternative pour récupérer les modes d'un chan.
Variable à déclarer
Ceci est à mettre à l'endroit où l'on veut récupérer les modes d'un chan
Ajoutez au dict toutes les variables que vous pourriez avoir besoin de récupérer après avoir reçu les modes du chan.
$variable1 et $variable2 ne sont là que pour l'exemple.
Vous devez terminer la procédure à cet endroit, comme l'indique le } que j'ai volontairement ajouté à la fin, puisqu'on attend de connaître les modes du chan avant de continuer.
Ajoutez ensuite cette procédure qui s'occupera de réceptionner la réponse du serveur
Cette procédure récupère les modes qu'on a demandé et appelle la proc suite_des_operations qui contient la suite de votre code, en lui passant en paramètre $chanmodes (qui contient les modes que l'on souhaitait connaître), ainsi que les autres paramètres que vous aurez éventuellement choisi de transmettre d'une proc à une autre comme $arg1, $arg2, ...
Pour finir, vous devez ajouter ce bind
Source : http://www.boulets.oqp.me/tcl/routines/t...-0017.html
Code :
getchanmodes #testchan
Tcl: +Ctrn
* MenzAgitat sets mode: +mQS
getchanmodes #testchan
Tcl:+mCtrn
Dans cet exemple, on voit que les modes Q et S sont complètement ignorés par getchanmode.
Voici donc une méthode alternative pour récupérer les modes d'un chan.
Variable à déclarer
tcl
array set getchanmodes_session {}
Ceci est à mettre à l'endroit où l'on veut récupérer les modes d'un chan
tcl
variable getchanmodes_session([md5 $chan]) [::tcl::dict::create "variable1" $variable1 "variable2" $variable2]
putserv "MODE $chan"
}
Ajoutez au dict toutes les variables que vous pourriez avoir besoin de récupérer après avoir reçu les modes du chan.
$variable1 et $variable2 ne sont là que pour l'exemple.
Vous devez terminer la procédure à cet endroit, comme l'indique le } que j'ai volontairement ajouté à la fin, puisqu'on attend de connaître les modes du chan avant de continuer.
Ajoutez ensuite cette procédure qui s'occupera de réceptionner la réponse du serveur
tcl
proc getchanmodes {sender raw data} {
variable getchanmodes_session
set chan [lindex $data 1]
set chan_hash [md5 $chan]
if { [::tcl::info::exists getchanmodes_session($chan_hash)] } {
set variable1 [::tcl::dict::get $getchanmodes_session($chan_hash) "variable1"]
set variable2 [::tcl::dict::get $getchanmodes_session($chan_hash) "variable2"]
unset getchanmodes_session($chan_hash)
set chanmodes [join [lrange [split $data] 2 end]]
suite_des_operations $chan $chanmodes $variable1 $variable2
}
}
Cette procédure récupère les modes qu'on a demandé et appelle la proc suite_des_operations qui contient la suite de votre code, en lui passant en paramètre $chanmodes (qui contient les modes que l'on souhaitait connaître), ainsi que les autres paramètres que vous aurez éventuellement choisi de transmettre d'une proc à une autre comme $arg1, $arg2, ...
Pour finir, vous devez ajouter ce bind
tcl
bind raw - 324 getchanmodes
Source : http://www.boulets.oqp.me/tcl/routines/t...-0017.html