[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
Répondre Avertir
#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 ?
Répondre
#3
(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 .
Répondre Avertir
#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 ?
Répondre
#5
(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
    

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
Répondre Avertir
#6
Je viens de trouver.....
il suffit de remplacer ceci :
Code :
bind msgm - !hello hello:msg
par ceci :
Code PHP :
bind msg - !hello hello:msg 

Forcément....

encore merci pour ton aide mon script fonctionne Wink

Bon dimanche
Répondre Avertir
#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
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté