Fonction banlist
#1
Bonsoir !

J'ai actuellement un soucis avec un petit TCL assez simple que je souhaite réaliser et le soucis vient de la fonction banlist !
En effet, je réalise un foreach assez simple de la manière suivante :
Code :
        foreach ban [banlist $vars(salon)] {
        
            putserv "PRIVMSG $vars(salonteam) :Ban found: $ban"
        
        }

Qui doit normalement retourner l'ensemble des bans sur le salon. Mais voilà j'ai le soucis suivant : La fonction banlist retourne seulement les bans posés APRES la connexion du bot.
Il oublie totalement de regarder la banlist à sa connexion et donc pour lui il pense qu'elle est vide (c'est mon opinion).
Si je pose un ban après sa connexion, le foreach retourne bien le ban mais seulement celui là, pas les anciens ...

C'est assez embêtant pour ce que je souhaite faire ...
Je pense peut-être a un mode, ou une ligne dans le fichier de config qui fait regarder la banlist à la connexion .. enfin un truc dans le genre là, parce que là je vois vraiment pas dans le code comment changer ça.

Enfin voilà, merci beaucoup Smile
Répondre Avertir
#2
Salut! (Hey, question débile, c'est pour un remake de Promethee :p ?)

J'avais déjà eu ce problème sur un autre TCL, le seul moyen que j'ai trouvé pour contourner le problème est de demander manuellement la liste de bans au serveur (avec MODE #chan b)
Après on récupère avec un raw la liste de bans et on crée une liste avec.

Le petit problème c'est que c'est impossible à réaliser de façon synchrone, vu que la reception des bans depuis le serveur est alors faite de façon asynchrone.

Mon idée serait donc de faire un espèce de cache contenant la liste de bans, et de l'actualiser toutes les 5mn par exemple. Ca devrait être plutôt facile à faire si le script n'est actif que sur un seul chan.

Ou on peut faire un truc pseudo-bloquant avec vwait (qui ne marche que sur eggdrop1.6.20+), qui attends la fin de la reception de la liste des bans avant de continuer l'execution du script.

J'essaierais de faire un truc dans ce style là cet aprem'
Répondre Avertir
#3
mdr, non c'est pas pour Promethee mais un autre eggdrop sur un salon officiel Smile

J'avais pas pensé à ce genre de solution ... je crois que je vais me pencher sur ça. Le faite que ça soit asynchrone me pose pas de soucis du tout, je suis pas à quelques secondes près.

A la limite pour mon soucis j'ai même pas besoin de la stocker, un traitement direct devrait aller. En gros je souhaite enlever les bans après 48h automatiquement. Je regardais la banlist chaque minute mais bon, je vais augmenter à 5 pour pas le surcharger trop le pauvre et ça passera sans soucis avec ta méthode.

Enfin merci pour l'aide Wink
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté