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 : https://boulets.eggdrop.fr/tcl/routines/...-0017.html
Code:
getchanmodes #testchan
Tcl: +Ctrn
* MenzAgitat sets mode: +mQS
getchanmodes #testchan
Tcl:+mCtrn
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
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
Source : https://boulets.eggdrop.fr/tcl/routines/...-0017.html
Toute l'actualité de mes scripts ici (dernière mise à jour le 22/04/2020)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.