Detecter Flood texte
#1
Bonjour,

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 Mad

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.
Répondre Avertir
#2
Oui, ça me semble assez clair, mais ce n'est pas du flood Smile
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é).
Répondre
#3
BOnjour,

j'aimerais savoir si il est possible de remplacer le 3 dans

Code PHP :
(.)(\1{3,}) 

par une variable ?

Code PHP :
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.
Répondre Avertir
#4
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
}


Répondre
#5
merci CrazyCat pour cette solution

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.
Répondre Avertir
#6
parcontre je rencontre un souci avec ce code.je m'explique que je charge le script mon eggy monte en CPU 67.3 et ce qui fait que mon bot ping

Citation :dns 31966 67.3 0.3 5244 3428 pts/1 R 23:08 3:50 ./eggdrop DnS.conf

et qd je suprime le tcl mon bot tourne normalement Mad

Citation :dns 5296 0.0 0.2 4812 3124 pts/1 S 23:15 0:00 ./eggdrop DnS.conf

une idée sur ce souci svp ?


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.
Répondre Avertir
#7
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.
Répondre
#8
merci pour cette réponse CrazyCat.
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.
Répondre Avertir


Atteindre :


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