ANTISPAM

Panthouffle Messages postés 281 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 14 avril 2008 - 28 nov. 2006 à 00:49
cs_Benjamin37 Messages postés 59 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 18 mars 2010 - 1 déc. 2006 à 14:53
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40490-antispam

cs_Benjamin37 Messages postés 59 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 18 mars 2010
1 déc. 2006 à 14:53
Inutile pour mon avis . je rejoins l'idée que un modérateur est là pour modérer intelligemment ; et non pas appuyer betement sur une touche ou que ça se fasse automatiquement ! ( chacun son point de vue )
Panthouffle Messages postés 281 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 14 avril 2008
30 nov. 2006 à 21:37
je suis d'accord avec tofu, les modérateurs ne sont pas là pour rien (:
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
30 nov. 2006 à 20:21
+72
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
30 nov. 2006 à 19:59
+1
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
30 nov. 2006 à 19:48
les automatismes: c'est le mal.

si on met des modérateurs c'est surement pas pour qu'ils utilisent des scripts automatiques mais pour qu'ils utilisent leur cerveau pour faire la distinction entre un spam et un mec qui discute et qui lache un # par inadvertance ou par exemple pour donner une info. "tien sur mon répondeur je tape #123" et tac ban, n'importe quoi...

en attendant d'arriver à faire un robot ayant un semblant d'IA, utilisez des semi-automatismes qui vous avertissent qu'il y a eu une action "suspecte" sur le salon et agissez en fonction.
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
30 nov. 2006 à 08:22
En effet, je ne dois pas avoir compris le but du code.
C'est surement ca ;)

Pada[newb]
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
30 nov. 2006 à 03:22
ce que j'ai donné n'est qu'à titre d'exemple :p .
je ne pourrais jamais prétendre de refaire ton code ;o)

bref !
Panthouffle Messages postés 281 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 14 avril 2008
29 nov. 2006 à 23:32
Je crois que tu n'as pas compris ce que j'essai de te montrer, en fait tu peux remplacer tes trois on text par un seul, en te servant de quelques conditions de plus, ensuite tu fais la même chose avec les autre events

on *:text:*:#:{
if (# isin $1-) {
if ($chan == $wildtok($1-,#*,1,32) || $nick isop $chan) { halt }
mode $chan +b $nick
kick $chan $nick SPAM INTERDIT 1WorldDMT?
}
elseif (www. isin $1- || http isin $1-) {
if ($nick isop $chan) { halt }
mode $chan +b $nick
kick $chan $nick SPAM INTERDIT 1WorldDMT?
}
}

Ici j'ai mit le www. et le http dans la même condition parce qu'ils font exactement les même commandes!

En espérant t'avoir aidé...
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
29 nov. 2006 à 23:06
Panthouffle salut

"c'est vrai que pada n'a pas raison, tu n'utilises pas 15 on event mais bien 9 ;) hu²
mais je ne comprend pas pourquoi tu dit qu'il n'a pas comprit le but de ton code, tu t'appuie sur quoi ? "

bin je m'apuis sur un point que vous vous eloignez de ça!!
le nom du chan il ne faut pas avoir un kick en parlant du meme chan en question :/
et dans ça

on *:text:*:#:{
if (# isin $1-) { }
elseif (www. isin $1-) { }
elseif (http isin $1-) { }
}

tu a raison de reduire bro mais j'ai pas utilisé ça car je fuis le spam sans l'avoir faire "if (# isin $1-) { }" donc mon chan est inclu alors il reste une equoition je pense !!
et c'est ce que j'ai pus trouvé

on *:text:*#*:#:{
var %chan = $wildtok($1-,#*,1,32)
if ($chan == %chan) { halt }

tu vois le but bro?
Panthouffle Messages postés 281 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 14 avril 2008
29 nov. 2006 à 22:37
Pour le on text, je te donnais un exemple, ensuite il te faut l'adapter à tes besoins:

on *:text:*:#:{
if (# isin $1-) { }
elseif (www. isin $1-) { }
elseif (http isin $1-) { }
}

"1. je repond a PaDa et WIMS
lol!! tu n'a rien conclus :/ bien sur j'ai lus les commentaires!!
et regarde bien il y a on text, on notice et on action..
mais toi esque t'a bien compris le but de ce code?? je ne pense pas :s"

c'est vrai que pada n'a pas raison, tu n'utilises pas 15 on event mais bien 9 ;) hu²
mais je ne comprend pas pourquoi tu dit qu'il n'a pas comprit le but de ton code, tu t'appuie sur quoi ?
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
29 nov. 2006 à 22:00
salut a tous

1. je repond a PaDa et WIMS
lol!! tu n'a rien conclus :/ bien sur j'ai lus les commentaires!!
et regarde bien il y a on text, on notice et on action..
mais toi esque t'a bien compris le but de ce code?? je ne pense pas :s

2.apropos du comments de TropNul
meme si je fais ça
on *:text:*:#:{
if ($1 == a) { }
if ($1 == b) { }
if { }
}
la valeur prise en compte c'est "$1"
donc si le # , www. , http viennent pas le premier mot ça ne va pas fonctionné :/
exp:
nick dit: #chan (ok là ça capture)
mais
nick dit: venez voir ce chan #chan (là c'est $5 pas $1 ) x)
mais pour ton 2eme code
on *:TEXT:*:#:{
if ($nick !isop #) {
if $regex($strip($1-),/(\#\w+\b|(www\.|http:\/\/)\w+([-_\.]?\w+)?\.\w{2,4})/i) {
spam détecté !
}
}
}

lol t'es inteligent mais ou es passé le chan présent??
si j'ai fais ce code c'est pas pour rien

on *:text:*#*:#:{
var %chan = $wildtok($1-,#*,1,32)
if ($chan == %chan) { halt }

c'est pour rien c'est pour ne pas etre kick en ecrivant le nom du chan là ou on se trouve!!exp: si on est dans #dalnetchat, je ne dois pas etre kick si j'ecrit #dalnetchat biensur
donc on est toujour sur le même prob quand j'ecrit le nom du chan présent je suis kick!! :/

la seule personne qui a bien parlé c'est Panthouffle en disant:

"petit bug : si on dit deux chans ou plus dans le même texte ça tiendra compte uniquement du premier chan qui a été dit donc on pourras tricher"

c'est vrai! il a raison et je l'avais repondu en disant:

"et pour ce que tu a dis ensuite qu'il ne prend compte que du premier ok t'as raison mais tu le dis parceque tu sais ce que j'ai mis mais si tu ne sais pas tu ne va pas faire une tel invitation
par exp: nick dis venez visitez #mon chan #son chan :s
il va directement dire visitez #son chan"

et ce n'ai que mon premier script :)
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
29 nov. 2006 à 20:28
mdr, j'adore le commentaire de PaDa puisqu'il il a entierement raison
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
29 nov. 2006 à 10:57
Hello,

Tu ne factorises rien, tu utilises 15 "on event", j'en conclus que tu n'as même pas lu les commentaires sur les sources d'ici ... on fait toujours les mêmes remarques, je te mets 3, ne le prends pas mal ;)

Pada
cs_TropNul Messages postés 340 Date d'inscription dimanche 18 septembre 2005 Statut Membre Dernière intervention 22 octobre 2009
28 nov. 2006 à 20:35
hello.

idem que panthouffle ^^

tu dis que si tu fais:

on *:text:*:#:{
if ($1 == a) { }
elseif ($1 == b) { }
else { }
}

cela ne prendra toujours pas en compte plusieurs choses dans une même phrase. c'est vrai !

pourquoi ne pas faire:

on *:text:*:#:{
if ($1 == a) { }
if ($1 == b) { }
if { }
}

cela te détectera ce que tu veux :)

AvisPerso:
Je ne suis pas d'accord sur tes "cibles". Si par exemple je dis le caractère #, je serais kickban. C'est un peu large non? . ou même si je donne le fameux #include du langage C :)
Même chose pour les 2 autres cibles : www. ou http sont trop larges .

Si cela est trop premier code, bravo pour l'effort mais il te reste à présent a mieux cibler et à optimiser ;o)

j'ai un outil de prédilection quand il s'agit d'analyse de chaîne de caractère et ce sont les expressions rationnelles ou expressions régulières, bref les REGEX :o)

à titre d'exemple pour un on TEXT , je commencerais par cela:

on *:TEXT:*:#:{
if ($nick !isop #) {
if $regex($strip($1-),/(\#\w+\b|(www\.|http:\/\/)\w+([-_\.]?\w+)?\.\w{2,4})/i) {
spam détecté !
}
}
}

tu vas me dire : " C'est quoi ce langage ? "
C'est une "Expression Rationnelle" ! Là, elle est très 'sommaire' mais, je peux t'assurer que sa puissance est inimaginable ;o)

pour plus d'infos aux sujet des regex, -> google ^^ ou encore /help $regex , mais surtout, cherches le tuto de Sax ! Il y a tout dans ce tutoriel pour débuter.

dans ce que j'ai donné , il détectera toujours le #include :|
pour éviter cela, faudra utiliser des conditions avec des if ou encore une expression conditionnelle. bref, c'est encore toute une histoire que je te laisse le plaisir (et l'arrachage de cheveux) de découvrir :p
WorldDMT Messages postés 871 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 6 janvier 2012 1
28 nov. 2006 à 08:26
Panthouffle salut
tu dis qu'il falait ecrire plutot

on *:text:a:#:{ }
on *:text:b:#:{ }
on *:text:c:#:{ }

devient -->

on *:text:*:#:{
if ($1 == a) { }
elseif ($1 == b) { }
else { }
}
mais dans ce cas si le a , b ou c viennent dans une phrase??
et (1$ == a) ça prend le premier mot exp:
nick dit: #nom du chan le script marche
mais si par exp:
nick dit: visitez mon chan #nom du chan ou le web www.lesite.com ect..
ça ne va pas capturer je pense :/

et pour ce que tu a dis ensuite qu'il ne prend compte que du premier ok t'as raison mais tu le dis parceque tu sais ce que j'ai mis mais si tu ne sais pas tu ne va pas faire une tel invitation
par exp: nick dis venez visitez #mon chan #son chan :s
il va directement dire visitez #son chan

je ferai une mise a jour avant d'avoir d'autre comments ;)
merci Panthouffle pour ce commentaire :)
Panthouffle Messages postés 281 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 14 avril 2008
28 nov. 2006 à 00:49
un peu truc pour ne pas avoir plusieurs évènements on text etc., regrouper ses events, voici un exemple avec on text (c'est valable pour les autres events)

on *:text:a:#:{ }
on *:text:b:#:{ }
on *:text:c:#:{ }

devient -->

on *:text:*:#:{
if ($1 == a) { }
elseif ($1 == b) { }
else { }
}

petit bug : si on dit deux chans ou plus dans le même texte ça tiendra compte uniquement du premier chan qui a été dit donc on pourras tricher

dans "if ((%chan) && ($chan == %chan)) { halt }" --> ici tu n'as pas besoin de vérifier si %chan existe puisque le but de ta condition est de savoir s'il est égal a $chan

"if ($nick = $me)" --> normalement ça n'arrievera jamais puisque on text/action et notice ne capterons pas tes propres textes

les . devant les kicks ne servent à rien et tu ne vérifie même pas si tu est op ou halfop avant de kick/ban

voila, en autant que ça fonctionne c'est bien, ensuite avec un peu d'optimisation c'est encore mieux ;)
Rejoignez-nous