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 !

COMMANDE DE PING POUR BOT


Information sur la source

Description

J'ai entendu beaucoup de personne demander comment que l'on peut crée sa propre commande de ping pour son bot. Je répond a votre appelle.

 

Source

  • On 1:text:*:#ton-salon: {
  • If ($strip($1) == !ping) {
  • Ver $nick | set %chan.ping $chan
  • }
  • If ($1 == !pong) {
  • Ver $nick | set %chan.ping $chan
  • }
  • }
  • On 1:CTCPREPLY:VERSION*:.msg %chan.ping %ping 3lag de 4 $calc($calc($ticks - %ticks)/1000) 13Secondes | unset %ping | unset %ticks | unset %chan.ping
  • Alias ver ctcp $1 version | %ticks = $ticks | %ping = $1
On 1:text:*:#ton-salon: {
  If ($strip($1) == !ping) {
    Ver $nick | set %chan.ping $chan
  }
  If ($1 == !pong) {
    Ver $nick | set %chan.ping $chan
  }
}
On 1:CTCPREPLY:VERSION*:.msg %chan.ping %ping 3lag de 4 $calc($calc($ticks - %ticks)/1000) 13Secondes | unset %ping | unset %ticks | unset %chan.ping
Alias ver ctcp $1 version | %ticks = $ticks | %ping = $1

Conclusion

Voila, c'est un peux bete mais il faut y penser.

A la place de #ton-salon vous mettez le salon ou votre bot est installer

Je suis ouvert a toute modification, ou tout racourssissement.
 

Commentaires et avis

signaler à un administrateur
Commentaire de minerbe le 20/10/2007 20:56:09

J'attend avec impatience tout amélioration qui sont possible

signaler à un administrateur
Commentaire de Panthouffle le 20/10/2007 23:43:59

salut, pour commencer, tes deux conditions sont équivalentes à une condition multiple vu que les commandes sont les mêmes pour les deux conditions, ça va te permettre de virer l'aliase Ver, aussi, tu fais un $strip seulement dans la première condition, donc ça va te permettre de faire un $strip pour les deux mots (!ping et !pong) en utilisant une variable

pour tes variable globale, tu pourrais les rasembler de sortes à ce que tu puisses faire un /unset général à la fin de l'éxécution de ton programme ; /unset ping.*

on *:text:*:#ton-salon: {
  var %strip = $strip($1)
  if ((%strip == !ping) || (%strip == !pong)) {
    ctcp $nick version
    set %ping.ticks $ticks
    set %ping.nick $nick
    set %ping.chan $chan
  }
}

et pourquoi n'utilises tu pas ctcp <nick> ping ? question de goût peut-être mais tout de même plus approprié pour ton code..

voili voilou ^^ bonne continuation

signaler à un administrateur
Commentaire de RCA ArKanis le 21/10/2007 00:13:26

plutôt que d'utiliser une variable %strip, tu fais tokenize 32 $strip($1-)

tu devrais mettre ton alias ver en local (alias -l ver)

pourquoi tu utilises le CTCP VERSION alors que le CTCP PING existe ?!

"faut y penser", ben pas tant que ça ... c'est du déjà vu et c'est plutôt inutile ...

signaler à un administrateur
Commentaire de Panthouffle le 21/10/2007 00:28:30

plutôt que d'utiliser une variable %strip, tu fais tokenize 32 $strip($1-)
» j'y ai pensé :), mais en vaut t'il la peine? à voir..

tu devrais mettre ton alias ver en local (alias -l ver)
» si tu regardes l'extrait que j'ai mit dans mon commentaire l'aliase ver n'existe plus ^^

pourquoi tu utilises le CTCP VERSION alors que le CTCP PING existe ?!
» c'est ce que je lui ai fait remarquer ^^

signaler à un administrateur
Commentaire de uaip le 21/10/2007 00:38:42

#  If ($strip($1) == !ping) {
# Ver $nick | set %chan.ping $chan
# }
# If ($1 == !pong) {
# Ver $nick | set %chan.ping $chan
# }

c'est quoi la différence entre ping et pong la dedans ?

signaler à un administrateur
Commentaire de uaip le 21/10/2007 11:45:29

panthouffle, personnelement, je trouve ca mal pensé de stoker le $1 dans une var avant de vérifier s'il est bien égal à ping ou pong, ca veut dire qu'a chaque phrase, le bot va setter la var %strip... un simple
if ($strip($1) == !ping || $v1 == pong)
suffit...

signaler à un administrateur
Commentaire de RCA ArKanis le 21/10/2007 12:01:47

* /if: ambiguous format
alors svp, utilisez la syntaxe CORRECTE pour les if, merci :x
if ((condition1) || (condition2) || (...)) { action }
à la limite, s'il n'y a qu'une action, les { } sont facultatifs

Deuxième raison pour le code ne fonctionne pas : le $v1 sera vide car la première condition n'est pas vérifiée, et du coup tous les $vN sont vides, il faut donc réutiliser $strip($1) ou alors faire comme j'ai dit : tokenize 32 $strip($1) ou ($1- mais ici $1 suffit)

signaler à un administrateur
Commentaire de uaip le 21/10/2007 12:08:17

$v1 reprend simplement $strip($1) peu importe que la premiere condition soit validée ou pas... et ca fait 1an que je code avec ( .. || ... ) et j'ai jamais eu de problème.
mais bon, je te fais confiance vu notre différence de niveau en mIRC ^^

signaler à un administrateur
Commentaire de RCA ArKanis le 21/10/2007 12:19:40

ah, erreur de ma part pour le $v1 == !pong, si je mets $v1 == pong c'est sûr que ça ne fonctionnera pas

effectivement, ça fonctionne, mais je trouve que là c'est de l'abus de la part de Khaled :x il n'aurait du faire les $vN que si la condition était vérifiée

ta syntaxe de parenthèses fonctionne chez toi parce qu'à chaque fois tu rajoutes des { }, même si tu n'as qu'une action.
Si un jour tu codes en C, C++ (et sûrement d'autres langages), tu verras que la syntaxe que je te donne est la plus utilisée, et peut-être même une des seules qui fonctionne

signaler à un administrateur
Commentaire de minerbe le 21/10/2007 12:30:08

Pas totalement faux mais

<<pourquoi tu utilises le CTCP VERSION alors que le CTCP PING existe ?! >>

CTCPREPLY:PING*: ??? non pas de trop

en ce qui s'agis de l'oganisation c'est vrai que

#  If ($strip($1) == !ping) {
# Ver $nick | set %chan.ping $chan
# }
# If ($1 == !pong) {
# Ver $nick | set %chan.ping $chan

c'est vrai que j'ai fait un peux long ^^ alors que comme uaip a proposer if ($strip($1) == !ping || $v1 == pong) aurais suffit. j'effectuerais les modification merci.

signaler à un administrateur
Commentaire de uaip le 21/10/2007 13:34:38

oui, désolé, erreur de ma part, j'ai oublié le '!' ^^.
Araknis, ta réponse avec les { } m'a l'air bonne, et en effet, je code aussi en Perl, mais là aussi j'utilise toujours (... || ...). en fait je ne mets les doubles parentheses qu'a certaines conditions. par exemple, je veux :
- soit un pseudo = pouet
- soit les chiffres 1 et 3
dans ce cas la (en mIRC) je mets :
if ($nick == pouet || ((1 isin $1-) && (3 isin $1-)))
[parce que pour les && je sépare ) && ( ].
enfin voila, tu as sans doute raison a propos des { } et c'est toujours mieux de l'apprendre tard plutot que pas du tout :)

signaler à un administrateur
Commentaire de Panthouffle le 21/10/2007 17:00:41

bon pour ce qui est de l'usage de conditions multiples (combinées) (&&, ||), en c++, la syntaxe c'est comme arkanis l'a dit, if ((condition1 == x) && (condition2 == y) || (condition3 == z)) et les accolades doivent s'appliquer s'il y a plus d'une commandes à effectuer, et la raison des paranthèses pour délimiter les conditions, c'est simplement pour éviter des erreurs de syntaxe ou de logique, tel que :

if (condition1 == x && condition2 == y || condition3 == z)

ceci pourrait arrivé :
x && condition2
y || condition3
...

et bonne idée pour le $v1, j'y avais pas pensé

signaler à un administrateur
Commentaire de wims le 22/10/2007 19:59:25

Pour les (), chacun sa manière, après faut pas s'étonné de voir des personnes dire "j'ai passé la nuit a cherché, je comprend pas".
Faut savoir ou et quand tu peux les enlevé/mettre surtout que  la syntaxe change de version en version (de plus en plus restreinte, c'est mieux je trouve :))

Par contre pour ce qui est des { }, la syntaxe change pas beaucoup, ils servent normalement a délimité les blocs de command.Un bloc ça veux dire 2 lignes.Generalement, on vois rarement des command enchainé sur une ligne du style :

if (1 == 1) { echo -a ok | hadd -m table item data }
(j'en connais qui tuerai pour pas voir ça :))

mais vu qu'il n'y a pas de bloc, les {} sont pas nécéssaire  ici :
if (1 == 1) echo -a ok | echo -a ok1

Il y a des cas ou ne pas mettre les { } sur deux command provoquera une erreur (car mettre les { } facilite la compréhension du code par mirc), mais je n'arrive pas a le généralisé.C'étais juste pour dire que les {} ne sont pas facultatif que quand il n'y a qu'une command :)

signaler à un administrateur
Commentaire de RCA ArKanis le 22/10/2007 21:37:05

oui, celui qui tue, c'est moi :p je supporte pas les |

pour ceux qui doutent encore :
if (1 == 2) echo -a ok | echo -a ok1
n'affichera que "ok1"

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

kommen cree un !ping [ par texas77 ] commen on ep faire un truc !ping svp jen trouve pa merci de votre aide! Aide Ping reply [ par Sylvain93 ] Bonjour,J'ai tent&#233; de faire un ping reply, seulement je n'arrive pas a afficher la r&#233;ponse en salle, la r&#233;ponse me revient seulement en Ping Timeout Pong, petit jeu [ par Mattis ] Voil&#224;, je cherche &#224; faire un script pr un petit jeu que nous avons sur notre chan. Lorsque que quelqu'un sort en (ping timeout) c'est au pl Difference entre le message de quit et le quit ping timeout ou reset by peer .... [ par Soprano71 ] bonsoir a tous ,je souhaiterai savoir il est possible de faire la difference entre le message de quit (avec un message) et le quit (ping timeout ) et


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



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,655 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é.