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] Problème de bind msg
#1
Bonsoir.

Alors voilà j'ai pris le système de auth en SQL du wiki, tout fonctionne sauf un détail.

Lorsque tu es auth le bot principal va dire à bot log un message qui lui va dire sur un salon que intel c'est auth.
Il reçois bien le message en privé de la part du bot principal

Quote:.[19:08:07] <Shini-Log> [19:08:07] [Shini!Shini@C478B8B.4AA6E26.A3B0E959.IP] authlog alias_angelius

Mais ce dernier ne lance pas la proc.

Je vous transmet la totalité des proc.

Shini.tcl (bot principal ou ont se auth).

tcl
#--------------------------------------------------#
# Shini.tcl                                        #
#                                                  #
# Toutes les procs/binds relatif au bot Principal. #
#--------------------------------------------------#
 
source [file join Shini shini-conf.tcl]
source [file join Shini Shini-log.tcl]
# Bot Log.
 
set ::logv "Shini-log"
 
# Binds.
 
bind msg - "auth" auth
 
# Système d'authentification.
 
proc auth {nick host hand arg} {
   #set arg [filtr $arg]
   #set args [split $arg]
   set pseudo [lindex $arg 0]
   set pass [lindex $arg 1]
   if { $pseudo == "" || $pass == "" } {
       puthelp "notice $nick :\0034Erreur ! \037\0031Veuillez tapez /msg $::botnick auth <votre-pseudo> <votre-pass>\037\0031"
       return 0
   }
   if { ![isvaliduser $pseudo] } {
       puthelp "notice $nick :0034Erreur ! \037\0031Vous n'avez aucun accèss $nick.\037\0031"
       return 0
   }
   if { [isvalidpassword $pseudo $pass] } {
       if { [issuspend $pseudo] } {
           puthelp "notice $nick : \0034Erreur ! \037\0031Votre accès et actuellement suspendu $nick.\037\0031"
           return 0
       }
       if { [isauth $pseudo] } {
           puthelp "notice $nick :\0034Erreur ! \037\0031Vous êtes déjà identifié.\037\0031"
           return 0
       }
       puthelp "privmsg $::logv :authlog $pseudo"
       puthelp "notice $nick :\0033Félicitations ! \037\0031Vous êtes maintenant identifié $nick.\037\0031"
       xauth $pseudo
       } else {
           puthelp "notice $nick :\0034Erreur ! \037\0031Mot de pas incorrect veuillez tapez le bon mot de pass merci.\037\0031"
           return 0
       }
}


Shini-log.tcl (Bot qui doit dire les log tel que auth c'est identifié auprès de bot principal).

tcl
#---------------#
# Shini-log.tcl #
#---------------#
 
# Bot Shini.
set ::Shi "Shini"
   
# Salon Log.
set ::logsal "#central-log"
   
# Proc auth-Log.
bind msg - authlog proc:xauth
proc proc:xauth { nick uhost hand text } {
   if [string match -nocase $nick $::Shi] {
       putserv "privmsg $::logsal :\0031\[\0034Chan-Log\0031\]\0031 \[\0033Auth\0031\] \037\0031Effectué par\037 \0034[join [lrange $text 1 end]]\0034"
   }
}
 
putlog "Shini-log.tcl"


Je pense que je fait un oublis, ou je fait mal les appels de procédures.
Si vous avez des pistes je suis preneur merci !
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#2
(sujet renommé, rien à voir avec le fait que ce soit une authentification SQL)

Comment sais-tu que la procédure ne se lance pas ?
Je ne vois pas de copie d'écran d'un .binds msg qui indiquerait le nombre de fois où le bind a été activé, et je ne vois pas de putlog de debug dans ta procédure.

tcl
proc proc:xauth { nick uhost hand text } {
   putlog "Message de $nick: $text"
   if {[string match -nocase $nick $::Shi]} {
       putserv "privmsg $::logsal :\0031\[\0034Chan-Log\0031\]\0031 \[\0033Auth\0031\] \037\0031Effectué par\037 \0034[join [lrange $text 1 end]]\0034"
   } else {
      putlog "$nick n'est pas $::Shi"
   }
}

Et utiliser string match quand tu peux te contenter d'une comparaison simple, je ne sais pas si c'est optimal.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#3
En effet la proc ne se lance pas en mettant les putlog


tcl
putlog "Message de $nick: $text"


Aucun retour.. Donc je pense que la proc n'es pas bonne.
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#4
Donc, comme dit précédemment: .binds msg
Es-tu sûr que les eggdrops ne s'ignorent pas ? As-tu tenté de faire toi-même un /msg Shini-Log authlog c'est un test ? As-tu activé le mode +m en console pour voir en PL les MP que voit vraiment l'eggdrop ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#5
Voici les retours

Quote:.[12:40:12] <Shini-Log> [12:40:15] Message de alias_angelius: c'est un test ?
.[12:40:12] <Shini-Log> [12:40:15] alias_angelius n'est pas Shini
.[12:40:24] <alias_angelius> .binds msg
.[12:40:24] <Shini-Log> [12:40:26] #alias_angelius# binds msg
.[12:40:24] <Shini-Log> Liaisons de commande:
.[12:40:24] <Shini-Log> TYPE FLAGS COMMAND HITS BINDING (TCL)
.[12:40:24] <Shini-Log> msg -|- authlog 1 proc:xauth

Et oui j'ai le mode +m d'activé en PL
Quote:.[12:42:21] <alias_angelius> .console
.[12:42:21] <Shini-Log> Your console is #central-log: mjkcobxs (msgs, joins, kicks/modes, cmds, misc, bots, files, server).
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#6
Donc la procédure marche bien, on dirait que Shini n'arrive pas à envoyer un MP à Shini-log ou bien Shini-log ignore Shini (as-tu vérifié la liste des ignore ?).

As tu essayé, depuis Shini, de faire .tcl putserv "PRIVMSG Shini-log :authlog autre test" ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#7
Je m’incruste dans la discussion: ça n’est pas plus rapide d’envoyer des messages entre egg via botnet ?
#8
Pour les taches incrustées :
[Image: https://imgur.com/hbLOHdo.gif]

Inutile de m'indiquer la sortie, je connais.
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#9
@crazy

Quote:.[14:51:16] <alias_angelius> .ignore
.[14:51:16] <Shini-Log> [14:51:16] #alias_angelius# ignores
.[14:51:16] <Shini-Log> No ignores.
.[14:51:28] <Shini-Log> [14:51:28] Message de Shini: autre test

Donc la aucun ignore, et sur le salon demander nous avons le retour :
Quote:.[14:51:29] <Shini-Log> [Chan-Log] [Auth] Effectué par test

Donc ce qui voudrait dire que la condition initiale n'es pas la bonne ?

@bds Non car via botnet quand le tcl sera fini j'ai pas franchement envie de dire toute la procédure.., certes la je galère sur un détail qui je suis sûre est un truc basique.. mais bon.

@Menz tu me tue !
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#10
Quelle condition initiale ?
Tu as dit que Shini envoyait bien le PM et que Shini-Log le recevait bien.
Avec la procédure proc:xauth qui contient les putlog, tu devrais avoir un retour en party-line. Ou bien Shini ne fait pas bien le PM, ajoute du debug pour savoir où tu passes.

Depuis le temps que tu fais des scripts, tu devrais savoir débuguer.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#11
cette condition :

tcl
if {[string match -nocase $nick $::logsal]} {


J'ai donc fait ainsi :

tcl
proc proc:xauth { nick uhost hand text } {
   putlog "Message de $nick: $text"
   set args [split $text]
   set victim [lindex $args 0]
   if {[string match -nocase $nick $::logsal]} {
       putserv "privmsg $::logsal :\0031\[\0034Chan-Log\0031\]\0031 \[\0033Auth\0031\] \037\0031Effectué par\037 \0034[lindex $text 0]\0034"
   } else {
      putlog "$nick n'est pas $::Shi"
      putserv "privmsg #service-bot :Putlog1 Ont regarde qui et la victim >$victim"
      putserv "privmsg #service-bot :Putlog2 Ont regarde ce que contient nick à la différence de victim ? >$nick"
   }
}

Lors de la commande auth nous avons donc sur le salon les retours qui nous donne :
Quote:.[18:09:55] <Shini-Log> Putlog1 Ont regarde qui et la victim >alias_angelius
.[18:09:56] <Shini-Log> Putlog2 Ont regarde ce que contient nick à la différence de victim ? >Shini
.[18:09:58] <Notice> de Shini Félicitations ! Vous êtes maintenant identifié alias_angelius.
Et dans le bot shini-log
Quote:.[18:09:54] <Shini-Log> [18:09:54] Message de Shini: alias_angelius
.[18:09:54] <Shini-Log> [18:09:54] Shini n'est pas Shini

J'ai donc rajouter $victim pour voir ce qu'il contenez par rapport à $nick. Donc $nick retourne le pseudo de l'envoyeur "le bot", et la victim la personne exécutant la commande de auth.
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
#12
Tu compares $nick à $::logsal qui contient le nom du salon.
Je suppose qu'il faudrait plutôt le comparer à $::Shi.
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#13
C'est un peu du grand n'importe quoi que tu fais... J'avoue que je ne comprends plus rien

tcl
if {[string match -nocase $nick $::logsal]} {

Tu compares le pseudo de celui qui envoit le MP avec le nom du canal de log ?
Pourquoi tu ne fais pas simplement:

tcl
if {[string tolower $nick] eg [string tolower $::Shi]} {


Et donc, les questions importantes:
1. est-ce que Shi envoie bien le MP à Shi-log ?
2. est-ce que Shi-log le reçoit bien ?
3. la procédure se déclenche-t-elle ?
4. fonctionne-t-elle comme il faut ?

Fais les tests dans cet ordre, un par un, sinon tu ne pourras jamais faire fonctionner ton usine à gaz. Il faut être méthodique.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#14
CrazyCat Wrote:Tu compares le pseudo de celui qui envoit le MP avec le nom du canal de log ?

C'est ce que je dis.
Trouve tes propres réponses stp, c'est pas bien de copier sur le voisin :p


CrazyCat Wrote:
tcl
if {[string match -nocase $nick $::logsal]} {

Pourquoi tu ne fais pas simplement:

tcl
if {[string tolower $nick] eg [string tolower $::Shi]} {

parce que c'est environ 3.5 fois plus rapide pour un résultat égal :
Quote:[18:49:58] <MenzAgitat> .tcl time {if {[string match -nocase Shini ldfkjlkdfgdfgl]} {}} 1000000
[18:49:58] <Boole> Tcl: 0.183523 microseconds per iteration
[18:49:56] <MenzAgitat> .tcl time {if {[string tolower ldfkjlkdfgdfgl] eq [string tolower Shini]} {}} 1000000
[18:49:56] <Boole> Tcl: 0.643582 microseconds per iteration
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#15
Alors dans l'ordre.

Oui Shini envois bien le MP à Shini-log j'avais comme message : .[18:09:54] <Shini-Log> [18:09:54] Message de Shini: alias_angelius
La procédure se déclencher bien mise à part la partie

tcl
putserv "privmsg $::logsal :\0031\[\0034Chan-Log\0031\]\0031 \[\0033Auth\0031\] \037\0031Effectué par\037 \0034[lindex $text 0]\0034"


Donc mon erreur était de mélanger pseudo et salon de log Comme la stipuler Menz
Au final c'était bien la condition ci le soucis

tcl
if {[string match -nocase $nick $::logsal]} {


Je n'avais pas réfléchis au fait que je comparé mal la situation comme une buse..
En remplaçant $::logsal par $::Shi, le code devient fonctionnel.

Mais j'ai comme l'impression avoir oublié une utilité sur cette fonction de string match, j'avoue que j'ai pas mal sécher dessus, et en vue de vos exemples ça me parle pas plus que ça..
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll


Possibly Related Threads…
Thread Author Replies Views Last Post
  Problème avec un script TCL (bind mode) Lyokomaster 3 4,513 15/03/2009, 18:05
Last Post: Merwin

Forum Jump:


Users browsing this thread: 1 Guest(s)