je bloque depuis un petit moment sur l'usage d'une procédure mais en mode privé.
c'est à dire quand la commande est envoyé en privé au bot.
donc via la commande : /msg nomdubot !hello argument
ou directement dans en message privé ! hello argument
Actuellement ma procédure fonctionne parfaitement en bind pub mais ne fonctionne pas en bing msg
voici le début de mon script :
Code :
bind msg - !hello hello:msg
proc hello:msg {nick uhost hand arg} {
global mysql libMySQLTcl
lassign $arg arg1 arg2
par contre il ne réagie même pas.... et en commande line je retrouve bien le message !hello argument
mais rien d'autre je pense qu'il ne match pas avec la procèdure.
(12/02/2017, 12:45)CrazyCat a écrit : [ -> ]Est-ce que par hasard tu n'utiliserais pas des couleurs avec ton client ?
Et as tu vérifié, lorsque tu fais .binds msg en party-line, que le nombre d'appels du bind reste nul ?
Non il n'y a pas de couleur au niveau de mon client irc.
par contre dans le retour du bot j'insere un peu de couleur mais je pense pas que le problème arrive au niveau des couleurs
même une simple procédure comme ci-dessous ne fonctionne pas :
Code :
bind msg - !hello hello:msg
proc hello:msg {nick uhost hand arg} {
global mysql libMySQLTcl
lassign $arg arg1 arg2
if {[string trim $arg] == ""} {
putserv "NOTICE $nick :\[BOT\] Erreur: Aucun Argument !"
{return}
}
set chan "#dev"
putserv "primsg $nick :\[BOT\] Bienvenue à la maison. !"
putquick "privmsg $chan :\[BOT\]\002 Bienvenue à la maison. \ \002"
}
la global mysql c'est pour que je puisse allez chercher des infos dans ma BDD sur mon User.
mais même ma le BOT ne répond pas
dans la party line :
.binds !hello
il n'y a pas de retour donc je pense que c'est vide...
par contre quand je suis connecté en party line le bot reçois bien la commande !hello mais il ne fait rien .
Tout d'abord, .binds !hello ne te renverra jamais rien, ce qui suit binds est un TYPE de bind (msg, pub, cron, ...)
Ensuite, pourquoi ne mets-tu pas un putlog au début de ta procédure pour savoir si tu entre dans la procédure ?
Et quel est ce {return} en plein milieu de ton code ?
(12/02/2017, 14:37)CrazyCat a écrit : [ -> ]Tout d'abord, .binds !hello ne te renverra jamais rien, ce qui suit binds est un TYPE de bind (msg, pub, cron, ...)
Ensuite, pourquoi ne mets-tu pas un putlog au début de ta procédure pour savoir si tu entre dans la procédure ?
Et quel est ce {return} en plein milieu de ton code ?
Oui en fait c'est .binds et le je vois bien hello:msg qui monte a chaque commande.
en fait je viens de comprendre..... il ne prends pas mes arguments en fait
si je fais :
!hello
il écrit bien dans le chan souhaité par contre il ne me prends pas les arguments suivant:
!hello 1 2 3 4
en gros il prends juste la commande !hello et pas les arguments derrière.
Code :
bind msgm - !hello hello:msg
proc hello:msg {nick uhost hand arg} {
global mysql libMySQLTcl
lassign $arg arg1 arg2 arg3 arg4
Je ne comprends pas pourquoi tu es passé à msgm alors qu'au départ tu étais avec msg
Et lorsque tu utilises msgm, tu reçois en argument l'intégralité de la ligne car le premier terme n'est pas considéré comme le déclencheur, c'est la différence entre ces deux binds.
Donc si tu veux utiliser msgm, ton lassign doit être: