Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : détect répétitions [ Divers / Eggdrop ] (uaip)

lundi 1 octobre 2007 à 16:56:44 | détect répétitions

uaip

Bonjour, alors voila, pour mon bot, je voulais mettre un anti flood. au bout de X temps (après bien des heures de galere) j'ai enfin trouvé une solution qui marche a 100%.
Seul hic : le code est très moche ! J'utilise une regexp qui détecte s'il y a 5 fois (ou plus, donc) le même caractère dans la derniere phrase dite sur le salon. Et en fait je voulais savoir si quelqu'un avait une autre méthode beaucoup plus jolie niveau codage.
Voici le code :

sub on_public {
  my ($conn,$event) = @_;
  my $text = $event->{'args'}[0];
  my @channel = $event->to;
  my $nick = $event->nick;
  if ($text =~ /(a{5,}|b{5,}|c{5,}|d{5,}|e{5,}|f{5,}|g{5,}|h{5,}|i{5,}|j{5,}|k{5,}|l{5,}|m{5,}|n{5,}|o{5,}|p{5,}|q{5,}|r{5,}|s{5,}|t{5,}|u{5,}|v{5,}|w{5,}|x{5,}|y{5,}|z{5,}|0{5,}|1{5,}|2{5,}|3{5,}|4{5,}|5{5,}|6{5,}|7{5,}|8{5,}|9{5,}|ù{5,}|é{5,}|è{5,}|ç{5,}|à{5,})/i) {
    $conn->privmsg(@channel,"Evite le flood, $nick. (" . substr($1,0,3) . ")");
    return;
  }
  if ($text =~ /([[:upper:].*]{5,})/) {
    $conn->privmsg(@channel,"Evite les majuscules, $nick.");
  }
  if ($text =~ /([[:punct:]]){5,}/) {
    $conn->privmsg(@channel,"Evite le flood de ponctuation, $nick. (" . substr($1,0,3) . ")");
  }
}

Merci

Honorine <3 /°/ www.uaipcreations.ovh.org

lundi 1 octobre 2007 à 18:59:27 | Re : détect répétitions

Panthouffle

ton code est complètement incompréhensible, mais c'est clair qu'il est simplifiable (en regex) ^^, me connaissant pas assez en regex je ne pourrai pas t'aider

- Panthouffle  -

lundi 1 octobre 2007 à 20:12:45 | Re : détect répétitions

ISoKa

Bonjour,

Y a ca qui est pas mal (c pas de moi mais je sai plus ki a fai ca)
alias isfloodChr {
  var %n $iif($2,$2,10) - 1,%r (.)\1 $+ $chr(123) $+ %n $+ $chr(125)
  return $regex($$1,%r)
}
tu fais $isfloochr(texte) et tu verras c sympa aprés te suffit juste d'adapter pour ton truc.

ISoKa

lundi 1 octobre 2007 à 20:37:39 | Re : détect répétitions

wims

http://www.ircfr.com/infomsg_FLOOD-LETTRES_755594.aspx
[ Lien ]

Après, le seul soucis est que le code de uaip n'est pas du mirc, surement du tcl.
 Il est vrai que rien ne lui empeche de reproduire le snippet dans le bon langage


lundi 1 octobre 2007 à 21:29:17 | Re : détect répétitions

uaip

Panthouffle, bah le code utilise deja 3 regexp, mais c'est clair qu'elles sont trop longues...
ensuite, oui désolé, j'ai oublié de préciser que c'était du Perl (mais on est dans la catégorie IRC eggdrop, donc les bots en Perl ne sont pas hors-sujet), merci wims je vais aller voir ces liens, par contre ce qui m'ennuie, c'est que (je sais pas pourquoi) les comms sont coupés, et j'ai seulement la moitié de vos phrases

Honorine <3 /°/ www.uaipcreations.ovh.org

lundi 1 octobre 2007 à 21:30:03 | Re : détect répétitions

uaip

j'ai oublié de remercier aussi isoka
je vais voir tous vos conseils quand j'aurai une meilleure connexion (je lag a mort, la...)

Honorine <3 /°/ www.uaipcreations.ovh.org

lundi 1 octobre 2007 à 21:42:56 | Re : détect répétitions

wims

Oui le fait que les messages soient coupés est assez gênant...

mardi 2 octobre 2007 à 05:19:43 | Re : détect répétitions

ISoKa

bah c'est clair que toi vu ke c'est du TCL c pas utilisable cash mais bon le principe du truc c'est surtout le regex donc je pense que ca devrai pas etre insurmontable pour monter ca en TCL si tu en as des notions deja apparement : )

ISoKa

mardi 2 octobre 2007 à 17:35:46 | Re : détect répétitions

uaip

c'est pas du tcl c'est du perl
et je vois pas la fin de ta phrase même en surlignant on voit pas =/
au fait le mieux est de revenir a la ligne tous les 10mots =P

Honorine <3 /°/ www.uaipcreations.ovh.org

mercredi 3 octobre 2007 à 21:00:29 | Re : détect répétitions

tofu

Membre Club

personnellement comme pattern j'utilise ça:

\w*(.)\1{5}

où le {5} est la limite de caractères autorisés
(donc à partir de 6 caractères identiques ça match.)

La seule contrainte est dans le cas où tu voudrais récupérer ce qui a été match pour faire des traitements divers.
tout simplement parce qu'avec ce pattern, ça match ce qu'il y a avant le groupe match dans le mot.

Exemples:
Ceci est un testtttttto.
oooaaaaaaaablabla
iiiiiiiiiiiiiiiiiioiiii.

Concordance 1: Début = 12, Fin = 22
Groupe 0 = testtttttt
Groupe 1 = t

Concordance 2: Début = 25, Fin = 36
Groupe 0 = oooaaaaaaaa
Groupe 1 = a

Concordance 3: Début = 43, Fin = 61
Groupe 0 = iiiiiiiiiiiiiiiiii
Groupe 1 = i

 

Donc si ya juste à match ça devrait tourner, si faut traiter les groupes match là ça peut poser souci.

 

voilà voilou.. (à priori ça devrait tourner en perl, même si j'utilise un éditeur d'expressions qui utilise l'api java, j'ai looké la javadoc et il ne me semble pas que les différences entre perl et java ait une incidence sur ce pattern...)



1 2

Cette discussion est classé dans : text, nick, my, conn, event


Répondre à ce message

Sujets en rapport avec ce message

aide pour query de bot en privé [ par deeeeeeedlit ] bonjour voilà je vais tenter d'expliquer mon problème au mieux. Pour expliciter un peu, ce bot est utilisé sur un salon d'un serveur dedié à un massiv A laide , mon script marche pas [ par Spidored ] g scripter un truc mais je pige pas ski cloche :'(merci de maide ::::on *:TEXT:!addanim:#>:{ /notice $nick 7,1 Salut $nick , Tu peu maintenant faire Ammélioration de code. [ par eleve ] Tout d'abord bonjour à tous.Doila j'ai fait un petit script pour mon bot (que j'ai fait également). Débutant en mIRC scripting, je bute sur deux ou tr Petits problemes ... [ par Tucefa ] SalutComme y a $time, existe t il une commande pour afficher la date ?Aussi, quel est la commandes pour afficher les 3 premiere et derniere ligne d'un Disfonction de la remote [ par Shaka54 ] Bonjour, voila, j'ai un pti probleme avec la remote.Normalement, lorqu'un Op tape !debout, la comande devrait s'activer, Voice, les 3permiers qui parl event halfop dehalfop probleme avec l'echo [ par HySteriK ] Bonjour, j'ai un soucis avec mes event halfop et déhalfop l'echo ne ce fait pas, j'ai toujour les echo par défault nick sets mode: +h nick ect... v on TEXT (debutant) [ par TRAX44 ] Bonjour, je suis debutant ! Et je comprends pas ce qui cloche la dedans : on *:TEXT:.:#: {/msg # $nick | if ($nick == "trax") {/msg # salut} } Norm Aider un debutant [ par yaya700 ] bonjour a tous.voila je vien sur ce site pas mal de fois et j'essaye d'apprendre a scripter et un pote ma dit d'essayer de faire des on *:text:j'ai pr aliase anti flood sur on text ? [ par lebaronrouge ] Salut ;o)J'ai un bot mirc qui répond à des commandes avec des on text genre !heure et il donne l'heure sur le canal.Comme j'ai integré beaucoup de com Event on quit [ par BiGOuF ] Bon, voici mon problème (certe trés basique, mais bon)Je viens de telecharger mirc 6.2, et j'aimerai modifier les messages de quit.Hors, je ne sais co


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,25 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.