Communauté sur les Eggdrops - Community about Eggdrops
[Demande] Blocage sur une commande en privé - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (https://forum.eggdrop.fr)
+-- Forum: Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum: Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Thread: [Demande] Blocage sur une commande en privé (/showthread.php?tid=1657)



Blocage sur une commande en privé - protec - 12/02/2017

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


RE: Blocage sur une commande en privé - CrazyCat - 12/02/2017

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 ?


RE: Blocage sur une commande en privé - protec - 12/02/2017

(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 .


RE: Blocage sur une commande en privé - CrazyCat - 12/02/2017

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 ?


RE: Blocage sur une commande en privé - protec - 12/02/2017

(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


RE: Blocage sur une commande en privé - protec - 12/02/2017

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


RE: Blocage sur une commande en privé - CrazyCat - 12/02/2017

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