28/05/2024, 08:24
Hello :)
J'ai découvert il y a peu de temps une petite subtilité de matchattr qui pourrait s'avérer gênante si on y prend pas garde.
On m'avait demandé un script qui doit agir si la personne n'a pas d'accès halfop (ou plus) sur un canal (ou de manière globale).
Il y avait donc dans la procédure:
Donc en toute logique, on s'attend à obtenir 1 si la personne n'a ni d'accès halfop sur l'eggdrop ni sur le canal visé.
Sauf que... Si l'utilisateur est inconnu ($handle *), la procédure matchattr retourne 0, donc pour le script cette personne a un accès.
Il faut donc toujours vérifier que l'utilisateur existe lorsqu'on travaille avec des absences de flags:
J'ai ouvert une issue et proposé une PR pour que matchattr retourne -1 plutôt que 0 si l'utilisateur est inconnu.
J'ai découvert il y a peu de temps une petite subtilité de matchattr qui pourrait s'avérer gênante si on y prend pas garde.
On m'avait demandé un script qui doit agir si la personne n'a pas d'accès halfop (ou plus) sur un canal (ou de manière globale).
Il y avait donc dans la procédure:
tcl
if {[matchattr $handle -l&-l $chan]} {
Donc en toute logique, on s'attend à obtenir 1 si la personne n'a ni d'accès halfop sur l'eggdrop ni sur le canal visé.
Sauf que... Si l'utilisateur est inconnu ($handle *), la procédure matchattr retourne 0, donc pour le script cette personne a un accès.
Il faut donc toujours vérifier que l'utilisateur existe lorsqu'on travaille avec des absences de flags:
tcl
if {$handle ne "*" && [matchattr $handle -l&-l $chan]} {
J'ai ouvert une issue et proposé une PR pour que matchattr retourne -1 plutôt que 0 si l'utilisateur est inconnu.