Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


[Demande] Blocage sur une commande en privé
#1
Hello,

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.

si vous avez une idée.

merci à vous et bon dimanche
#2
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 ?
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#3
(12/02/2017, 12:45)CrazyCat Wrote: 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 .
#4
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 ?
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#5
(12/02/2017, 14:37)CrazyCat Wrote: 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
    

set chan "#dev"

    putserv "privmsg  $nick :\[BOT\] Erreur: Aucun Argument !"
    putquick "privmsg $chan :\[BOT\]\002 Bienvenue à la maison. \ \002"
    putquick "privmsg $chan :\[BOT\]\002 $arg1 \ \002"
    putquick "privmsg $chan :\[BOT\]\002 $arg2 \ \002"
    putquick "privmsg $chan :\[BOT\]\002 $arg3 \ \002"
    putquick "privmsg $chan :\[BOT\]\002 $arg4 \ \002"
}
comment je peux récupérer les arguments ? c'est ou je bloque ^^
merci à toi
#6
Je viens de trouver.....
il suffit de remplacer ceci :

Code:
bind msgm - !hello hello:msg
par ceci :
PHP Code:
bind msg - !hello hello:msg 

Forcément....

encore merci pour ton aide mon script fonctionne ;)

Bon dimanche
#7
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:

tcl
lassign [split $arg] cmd arg1 arg2 arg3 arg4

Et $cmd contiendra !hello
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  MegaHAL en privé ? Belatucadrus 4 3,762 30/10/2009, 22:26
Last Post: Marc

Forum Jump:


Users browsing this thread: 1 Guest(s)