Bot anti-pub [Résolu]

cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention - 14 août 2005 à 14:47 - Dernière réponse : cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention
- 15 août 2005 à 03:37
Bonjour à tous, voilà j'ai été chargé de faire un bot anti-pub pour un channel sur QuakeNet.

Il est sensé, lorsque quelqu'un pub pour un channel, rejoindre le channel, laisser un message et repartir du channel



Un ami m'a donc (beaucoup) aidé à faire ça :



on *:text:*:#monchannel {

if ($chr(35) isin $1-) {

var %chan-name = $chr(35) $+ $gettok($gettok($1-,1,35),1,32)

join %chan-name

msg %chan-name monmessage

part %chan-name

}

}



le soucis c'est que le bot garde le tout premier channel cité, et à
caque fois que quelqu'un remet un # dans sa phrase, il rejoin toujours
le même channel même si ce n'est pas le même...

et de plus, il ne délivre pas le message et ne repart pas...



une derniere chose, j'aimerais que ce bot donne des avertissement a l'user qui pub, et qu'il le kick au bout de 3 fois...



Merci d'avance pour vos réponses, je sais que je ne suis pas toujours
très clair dans mes explications, n'hésitez donc pas à me le faire
savoir.. merci encore
Afficher la suite 

14 réponses

Répondre au sujet
Nolson 216 Messages postés mardi 7 novembre 2000Date d'inscription 16 mars 2006 Dernière intervention - 14 août 2005 à 15:29
+3
Utile
1- Tu as oublié les deux points à la fin du on text :
on *:text:*:#monchannel: {

2- Remplace 1 par 2 dans ton $gettok($1-,1,35) --> $gettok($1-,2,35)

3- Pour les avertissements et le kick, incrémente une variable personnalisée à chaque pub et avec des IF sur cette variable tu effectues l'action que tu veux.
/help /inc
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Nolson
Nolson 216 Messages postés mardi 7 novembre 2000Date d'inscription 16 mars 2006 Dernière intervention - 14 août 2005 à 17:11
+3
Utile
Normal tes timers ne sont pas adaptés !
Remplace le 5 et le 6 de tes timers par des 1 :
timer 1 4 .....
timer 1 10 .....
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Nolson
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 14 août 2005 à 20:08
+3
Utile
on *:text:*:#mychannel: {

if ($chr(35) isin $1-) {

var %chan-name = $chr(35) $+ $gettok($gettok($1-,2,35),1,32)

if (%chan-name != #mychannel) {

msg #mychannel Pas de pub ici $nick s'il te plais ;) merci :)

join %chan-name


timer 5 4 /msg %chan-name (Pub reply) Pub détéctée sur #mychannel
pour %chan-name effectuée par $nick ... merci de rejoindre #mychannel :)

timer 6 10 /part %chan-name

}

}

}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de fjxokt
S333 270 Messages postés vendredi 8 juillet 2005Date d'inscription 26 juin 2008 Dernière intervention - 14 août 2005 à 22:05
+3
Utile
Je sais pas où en est ton code, mais je reprends celui de fjkokt :)





on *:text:*:#mychannel: {

if ($chr(35) isin $1-) {

var %chan-name = $chr(35)
$+ $gettok($iif($gettok($1-,2,35) !=
$null,$gettok($1-,2,35),$gettok($1-,1,35)) ,1,32)

if (%chan-name != #mychannel) {

msg #mychannel Pas de pub ici $nick s'il te plais ;) merci :)

join %chan-name


timer 5 4 /msg %chan-name (Pub reply) Pub détéctée sur #mychannel
pour %chan-name effectuée par $nick ... merci de rejoindre #mychannel :)

timer 6 10 /part %chan-name

}

}

}



Tout ça est bien sur optimisable, au cas où il y a plusieurs channels de mensionnés.

Voilà normalement ça marche.

PS: J'ai juste changé la ligne avec le var %chan-name =
-------------------------------------
Signature des parents :
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de S333
fjxokt 841 Messages postés vendredi 28 janvier 2005Date d'inscription 25 février 2009 Dernière intervention - 15 août 2005 à 02:00
+3
Utile
pour cela tu peux utiliser les hash tables

exemple



on *:text:*:#mychannel:{

if ($chr(35) isin $1-) {

var %chan-name = $chr(35) $+
$gettok($iif($gettok($1-,2,35) !=
$null,$gettok($1-,2,35),$gettok($1-,1,35)) ,1,32)

if (%chan-name != #mychannel) {

hinc -m pub $nick
| if ($hget(pub,$nick) == 3) { kick $chan $nick c'est la troisieme fois
que tu pub | hdel pub $nick }

else msg #mychannel Pas de pub ici $nick s'il te plais ;) merci :)

join %chan-name

timer 5 4 msg %chan-name (Pub reply) Pub
détéctée sur #mychannel pour %chan-name effectuée par $nick ... merci
de rejoindre #mychannel :)

timer 6 10 part %chan-name

}

}

}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de fjxokt
Mc_AbBeR 303 Messages postés mercredi 15 juin 2005Date d'inscription 19 février 2007 Dernière intervention - 14 août 2005 à 15:17
0
Utile
var %chan-name = $chr(35) $+ $gettok($gettok($1-,1,35),1,32)

Voila le problème, il faut le unset...
Commenter la réponse de Mc_AbBeR
Nolson 216 Messages postés mardi 7 novembre 2000Date d'inscription 16 mars 2006 Dernière intervention - 14 août 2005 à 15:31
0
Utile
Mc_AbBeR pas besoin de unset puisque c'est une variable locale.
Commenter la réponse de Nolson
cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention - 14 août 2005 à 16:58
0
Utile
ouais désolé, j'avais pas oublié les ":" sur le remote du bot, donc ça vient pas de là :)

j'vais essayer de remplacer le 1 par le 2 comme tu me l'as dis ;)



edit : ça a l'air de marcher le truc c'est que il lache 2 fois
"monmessage" et il met pleins de messages d erreur... :s mais bon ça
fonctionne, j'ai réadapté un peu :



on *:text:*:#mychannel: {

if ($chr(35) isin $1-) {

var %chan-name = $chr(35) $+ $gettok($gettok($1-,2,35),1,32)

msg #mychannel Pas de pub ici $nick s'il te plais ;) merci :)

join %chan-name

timer 5 4 /msg %chan-name (Pub reply) Pub détéctée sur
#mychannel pour %chan-name effectuée par $nick ... merci de rejoindre
#mychannel :)

timer 6 10 /part %chan-name

}

}



P.S : Faudrait que je rajoute quoi pour qu'il n'effectue pas tout ça lorsque quelqu'un pub pour #mychannel ?
Commenter la réponse de cs_YkS
cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention - 14 août 2005 à 17:53
0
Utile
okay merci beaucoup :P



et pour éviter que les actions s'effectuent sur #mychannel ?
Commenter la réponse de cs_YkS
cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention - 14 août 2005 à 19:59
0
Utile
bon tout marche niquel j'ai remis les timers comme il faut, j'te remercie beaucoup Nolson pour ton aide :)



Je cherche toujours à empecher les actions de se faire lorsque la pub
est #mychannel, et aussi comment faire un kick après 3 avertos... j'ai
regardé dans l'help comme tu me l'as dis, le soucis c'est que déjà
c'est pas facile à comprendre, et de surcroit c'est en anglais, j'ai
cherché un mirc.hlp en français, mais je trouve que des traductions
bidons et y'a même pas tout dedans :/



Merci d'avance pour vos futures réponses, et encore merci Nelson



P.S : "Remplace 1 par 2 dans ton $gettok($1-,1,35) --> $gettok($1-,2,35)"

ça sert à quoi d'avoir changé exactement ? je suis novice en
scripting j'aimerais donc savoir à quoi ça sert sans copier bêtement,
merci Nelson ;)
Commenter la réponse de cs_YkS
cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention - 14 août 2005 à 20:55
0
Utile
Merci fjxokt :)

Le pire c'est que j'aurais su le faire, mais j'arrive pas à imaginer quoi mêttre...j'arrives pas à y penser tout seul :/



Merci beaucoup ;)
Commenter la réponse de cs_YkS
cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention - 14 août 2005 à 21:13
0
Utile
bon, ça marche mais y'a un nouveau soucis (j'vais le delete le bot je
sent ^^) c'est que si la personne ne met rien avant #pub, ça bug et ça
fait ça :



(21:05:46) (@YkS) #pub

(21:05:46) (@[CFnet]Bot) Pas de pub ici YkS s'il te plait ;) merci :)

(21:05:47) —› can't join # (requires key (+k))

(21:05:47) —› press (Control+F2) to retry!

(21:05:50) —› •(Pub• reply) Pub détéctée sur
#CFnet pour effectuée par YkS ... merci de rejoindre #CFnet :)

(21:05:51) —› no such nickname: ((Pub)



il ne marche que si la personne dit : "quelquechose #pub" et je vois vraiment pas d'où ça peut venir...



en tout cas un grand merci à tous vous m'avez déjà pas mal débloqué ;)
Commenter la réponse de cs_YkS
cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention - 15 août 2005 à 01:00
0
Utile
alors là S333 j'te remercie infiniment, ça marche niquel.. bravo, et
merci à tout ceux qui ont posté avant et m'ont bien aidé.. ça fait
plaisir de voir que des gens savent encore aider sur des forums... en
esperant qu'à force je pourrais moi aussi aider... j'ai du boulot quand
même ^^

Merci :)



P.S : me reste plus qu'à trouver le moyen pour kicker au bout de 3 fois ^^
Commenter la réponse de cs_YkS
cs_YkS 25 Messages postés dimanche 12 juin 2005Date d'inscription 6 avril 2008 Dernière intervention - 15 août 2005 à 03:37
0
Utile
Ca marche très bien, je te remercie beaucoup, j'vous remercie tous pour
m'avoir bien aidé, j'ai pu terminer le bot grâce à vous et le livrer en
temps et en heure :)



merci infiniment ;)
Commenter la réponse de cs_YkS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.