Mon script provoque un Excess Flood
#1
Bonjour à tous,
le titre de ce topic n'est pas très explicite mais il se trouve que j'ai besoin d'aide sur une procédure TCL qui ne fonctionne pas comme j'en ai envie.

Je vous explique un petit son fonctionnement :

Mon robot (nommé Pan) qui est donc un eggdrop s'occupe de gérer le modération (Badwords, Répétitions et spam) de 20 salons peuplés en moyenne par une centaine de visiteurs. Il s'occupe de poser des bans lors d'une récidive et de les retirer automatiquement après 10 minutes.
Jusque là tout fonctionne parfaitement.

Mon soucis : lorsqu'un opérateur de canal ou le robot en question pose un ban sur l'un des salons, je souhaite que le robot pose le ban en question sur les autres salons et qu'il face la même chose lors des unbans...

J'ai donc essayé de détecter les bans et unbans depuis le bind "MODE" :

Code :
if {$mode == "+b" || $mode == "-b"} {
foreach i $Bot(monitors) {
  putnow "MODE $i $mode $target"
}
}

Cela fonctionne dans le sens où le robot execute le code sans pleurnicher, mais il me semble qu'il envoie la commande "putnow" dès qu'il détecte les ban qu'il pose depuis ce même script.
Cela fait donc 20 x 20 putnow d'un coup (si je ne me trompe pas), ce qui provoque un Excess flood.

Ce que je souhaite faire pour remédier à cela, c'est d'abord vérifier si le ban n'est pas sur le salon avant d'envoyer le "putnow", et deuxièmement, que la boucle execute la commande seconde par secondes (comme un putquick" mais en plus rapide), l'équivalent en scripting mirc donnerait :

Code :
var %cpt = 1
while ( %cpt <= 100 ) {
.timer 1 %cpt commande
inc %cpt
}

Quelqu'un aurait-il une piste ?
Répondre Avertir
#2
Pourquoi ne pas utiliser le ban global sur l'eggdrop ?
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir
#3
Salut,

Essaye pushmode,putserv par exemple.
Putnow envoie la requête trop rapidement au server ce qui pourrais être ton soucis je pense.
De préférence je passerai en putserv à la place de putnow
Répondre Avertir
#4
Bonjour, merci pour ta réponse,
le soucis étant que putserv exécute la commande sur les salons où il y a déjà le ban, ce qui fait qu'il ne va pas chercher à savoir et va mettre au bout de la queue putserv à chaque fois un nouveau ban (en tout 400 fois). Ce qui rend l'application du ban sur tout les salons lent et encore plus si il y a d'autres bans posés en même temps.

Par contre je ne connais pas pushmode, qu'est-ce que c'est?
Répondre Avertir
#5
Citation :[00:48:16] (+alias_angelius) .tcl pushmode
[00:48:16] (@Identifia) Tcl: wrong # args: should be "pushmode channel mode ?arg?"
[00:48:28] (+alias_angelius) .tcl pushmode #Accueil +o alias_angelius
[00:48:28] (@Identifia) Tcl:
[00:48:30] [Mode] Identifia met +o alias_angelius

Essaye de voir un systeme de blackliste par traitement de fichier concernant ton ban.
Sa pourrais être une solution non ?
Répondre Avertir
#6
(04/03/2013, 00:40)BdS a écrit : Pourquoi ne pas utiliser le ban global sur l'eggdrop ?

Ce que je fais manuellement en PartyLine:
Code :
[18:39:27] ‹BdS› .+ban *!*@zeolia-CF3D8422.dsl.sta.abo.bbox.fr
[18:39:27] ‹(Chantier› [18:39:25] #BdS# (GLOBAL) +ban *!*@zeolia-CF3D8422.dsl.sta.abo.bbox.fr (requested)
[18:39:27] ‹(Chantier› New ban: *!*@zeolia-CF3D8422.dsl.sta.abo.bbox.fr (requested)

Salon ou l'user est présent:
Code :
[18:39:27] × Mode : Chantier / +b *!*@zeolia-CF3D8422.dsl.sta.abo.bbox.fr
[18:39:28] « Kick\ prout kické de #chantier par Chantier : Banni: requested

Les autres salon où il essai de rentrer:
Code :
[18:40:25] » Join\ prout - chantier@zeolia-CF3D8422.dsl.sta.abo.bbox.fr -[3]- #chantier
[18:40:26] × Mode : Chantier / +b *!*@zeolia-CF3D8422.dsl.sta.abo.bbox.fr
[18:40:26] « Kick\ prout kické de #quiz par Chantier : Banni: requested

Code :
[18:40:43] » Join\ prout - chantier@zeolia-CF3D8422.dsl.sta.abo.bbox.fr -[3]- #bricolage
[18:40:44] × Mode : Chantier / +b *!*@zeolia-CF3D8422.dsl.sta.abo.bbox.fr
[18:40:44] « Kick\ prout kické de #bricolage par Chantier : Banni: requested

Code :
[18:41:03] » Join\ prout - chantier@zeolia-CF3D8422.dsl.sta.abo.bbox.fr -[3]- #banGlobal
[18:41:04] × Mode : Chantier / +b *!*@zeolia-CF3D8422.dsl.sta.abo.bbox.fr
[18:41:05] « Kick\ prout kické de #banGlobal par Chantier : Banni: requested

Le temps du ban est paramétrable, la raison aussi et ça ne doit pas être impossible de coder qqle chose pour que les bans posés soient considérés comme des bans "global" (pour ne pas être obligé de mettre des flags "global").

Edit: en plus si l'user est sur plusieurs salons, gérés par l'eggdrop, au moment ou il prend un ban sur un salon X, il sera banni de tous les salons en même temps.

Ca se trouve j'ai pas compris ta demande, mais ça a l'air d'être ce que tu te veux, non ?
CrazyCat a écrit :La prochaine fois, essaye d'imaginer que j'ai un cerveau ...
Répondre Avertir
#7
Salut,

@BdS je suis d'accord avec toi..
Mais la ou je ne le suis pas c'est que eggdrop lag pas mal.

En faite le système de ban par PL et efficace oui mais si tu y mets plus de 400 bans.. Sa savère être trop lourd..
Le mieux et de faire un enregistrement par traitement de fichier avec un bind join * ...
Comme ça des que une personne rejoint le salon boum ban si elle et dans la liste.

Enfin après faut faire des teste mais d'après ce que j'ai tester y'a un moment de ça je n'utilisé pas la PL comme systême de ban global car sa laguer trop au bout d'un certains enregistrement de bans.
Répondre Avertir


Atteindre :


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