Aide: Bot en sockets [Résolu]

Signaler
Messages postés
301
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 février 2007
-
Messages postés
343
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
19 août 2006
-
Voila,
J'ai fait un bot en socket, il est connecter et tout.
Mais, je me demande si il est possible de faire des commande genre je dit !lolz, et le bot (en sockets) répond Lolz $nick !!!
Si oui, pouvez vous écrire le code ici ?
Merci d'avance.

10 réponses

Messages postés
840
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
1
On 1:Sockread:mech:{

sockread %mech.read | tokenize 32 %mech.read

if ($2 == PING) sockwrite -n mech PONG $remove($1,:)

elseif ($2 == PRIVMSG) {

if ($4 == !lol) {

var %nick $remove($gettok($1,1,33),:)

sockwrite -n mech PRIVMSG $3 :Lolllzz %nick

}

}

unset %mech.read

}



j'ai pas testé mais normalement ça devrait marcher

Messages postés
301
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 février 2007

Sa marche pas tout à fait!
J'ai rajouter
elseif ($2 == PRIVMSG) {
if ($4 == :!lol) {
var %nick $remove($gettok($1,1,33),:)
sockwrite -n irc PRIVMSG $3 :Lolllzz %nick
}
}
Pis sa marche
thx
Messages postés
266
Date d'inscription
vendredi 8 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008

Oui, tu recrée le on text en fait...

dans ton sockread, tu aura différent truc, PRIVMSG #CHAN :message

Suffit de récupérer le #chan et le :message.

Si tu veux voir à quoi ressemblent tous les messages, fait un /debug.


-----------------------------
Signature des parents :
Messages postés
969
Date d'inscription
lundi 16 juin 2003
Statut
Membre
Dernière intervention
1 juillet 2012
1
Comme l'a signalé S333, suffit de récuperer les données de ton sockread et de prendre ce que tu as besoin.



Lors d'un PRIVMSG, en socket tu reçois:



:pseudo!ident@adresse PRIVMSG #salon :message



via ton event sockread (on *:sockread:BOT:), tu recuperes les données (variable par exemple), tu /TOKENIZE 32 VARIABLE.



Ensuite, "$1" sera égal à :pseudo!ident@adresse

$2 = PRIVMSG

$3 = #Salon

$4 = :message

Si tu $gettok($1,1,33) (33 = valeur ASC de "!"), tu auras: :pseudo tu auras juste besoin de faire un p'tit $right avec comme valeur "1-" pour retourner le "$nick" en socket.



Si tu veux un exemple:

http://CM002.no-ip.biz/Socket.php
Messages postés
301
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 février 2007

Je comprend pas trop...
j'ai essayer
On 1:Sockread:mech:{
sockread %mech.read
if ($gettok(%mech.read,1,32) == PING) sockwrite -n mech PONG $remove($gettok(%mech.read,2,32),:)
elseif ($2 == PRIVMSG) {
if ($gettok(%mech.read,1,32) == PRIVMSG) sockwrite -n mech PRIVMSG #e.n.e.m.y :Lolzzz
}
unset %mech.read
}
mais sa marche pas:/
Messages postés
969
Date d'inscription
lundi 16 juin 2003
Statut
Membre
Dernière intervention
1 juillet 2012
1
euh...



On 1:Sockread:mech:{

sockread %mech.read

if ($gettok(%mech.read,1,32) = = PING) sockwrite -n mech PONG $remove($gettok(%mech.read,2,32),:)

elseif ($2 == PRIVMSG) {

if ($gettok(%mech.read,1,32) == PRIVMSG) sockwrite -n mech PRIVMSG #e.n.e.m.y :Lolzzz

}

unset %mech.read

}



Où se trouve ton TOKENIZE 32 %mech.read ?

Si tu n'as pas de TOKENIZE, tu as pas de "$N"



elseif ($2 == PRIVMSG) {

if ($gettok(%mech.read,1,32) == PRIVMSG) ...



Ce qui donne:



elseif ($2 == PRIVMSG) {

if ($1 == PRIVMSG) ...



Vois-tu tes erreurs ?



PS:

$1 = :pseudo!ident@adresse

$2 = PRIVMSG

$3 = #SALON

$4- = :message



ne l'oublie pas.
Messages postés
301
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 février 2007

Je comprend toujours pas...
Peux tu me "faire" le code stp?
Messages postés
301
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
19 février 2007

vous pouvez me dire comment op quelqu'un en sockets?
exemple:
if ($4 == :!op) {
var %nick $remove($gettok($1,1,33),:)
if %acces. [ $+ [ $address($nick,2) ] ] >= 300 sockwrite -n mech MODE $3 +o $nick
}
}

Sa marcherai?
Messages postés
840
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
25 février 2009
1
et si tu essayais par toi même ?

n'oublie pas que pour voir les commandes coté serveur, tu peux faire un /debug @win
Messages postés
343
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
19 août 2006
1
en socket le $nick n'est pas évalué. Faut que tu le récupéres comme l'a évoqué CoolMan avec $N . Ca doit être $remove($gettok($1,1,33),:)