Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique.
x
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 ?
en espérant que j'ai pu être clair :x
Cordialement
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
01/12/2010, 12:19 (This post was last modified: 01/12/2010, 14:01 by 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
bindpubm - "*" 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é).
j'aimerais savoir si il est possible de remplacer le 3 dans
PHP Code:
(.)(\1{3,})
par une variable ?
PHP Code:
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 }
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
03/12/2010, 16:43 (This post was last modified: 03/12/2010, 16:44 by CrazyCat.)
Déjà, il te manque le \ avant le 1.
Et la solution est:
tcl
set NFD "50"bindpubm - "*" 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 \
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
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.
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.