Accueil





Alternative à getchanmode car celui-ci ne voit que les modes du RFC1459



Démonstration
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
array set getchanmodes_session {}


Ceci est à mettre à l'endroit où l'on veut récupérer les modes d'un chan
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
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
bind raw - 324 getchanmodes

©2005-2016 Menz Agitat