j'aimerais savoir comment détecter le même caractère dans un flood.je m'explique beaucoup d'user flood avec les meme caractere du genre:
helloooooooooooooooooooooooooooooo ect ... et j'aimerais restreindre cela.
j'ai trouver divers TCL mais il ne détecte seulement la longueur de la phrase malheureusement.auriez vous un exemple de proc pour détecter la longueur du mot flood et non le texte ?
01/12/2010, 12:19 (Modification du message : 01/12/2010, 14:01 par CrazyCat.)
Oui, ça me semble assez clair, mais ce n'est pas du flood :)
Il faudrait utiliser une regexp du genre:
Code :
(.)(\1{3,})
Celle-ci permet de capter lorsqu'un même caractère est répété au moins 3 fois.
En TCL, ça donnerait:
tcl
bind pubm - "*" repet_test
proc repet_test { nick uhost hande chan text }{if{[regexp -all -- {(.)(\1{3,})}$text]}{
putserv "PRIVMSG $chan :Dis donc $nick, tu as bloqué ta touche ?"}return}
Le "& #92;" est à remplacer par \ Edit
Testé par DnS, ça fonctionne. J'avais commit une petite erreur : ne pas mettre le -inline dans les options de regexp si on veut avoir un résultat booléen (-inline retourne le tableau de ce qui a matché).
03/12/2010, 16:43 (Modification du message : 03/12/2010, 16:44 par CrazyCat.)
Déjà, il te manque le \ avant le 1.
Et la solution est:
tcl
set NFD "50"
bind pubm - "*" repet_test
proc repet_test { nick uhost hande chan text }{if{[regexp -all -- "\(.\)\(\\1\{$::NFD\,\}\)"$text]}{
putserv "PRIVMSG $chan :Dis donc $nick, tu as bloqué ta touche ?"}return}
juste une chose pourquoi ajouter les \ dans le regexp ?
certes j'ai bien vue que sans les \ il prenais pas le nombres dans la variable ,mais j'aurais pas pensé à ajouter les \
Non seulement l'eggdrop analyse tout les messages qui passent sur le (ou les) canal, mais en plus l'expression régulière est très gourmande car elle est sous forme de string et doit être interprétée.
Si tu utilisais la première expression régulière, ça consommerait bien moins.