[Résolu] Aide sur un tcl RAW
#1
Bonsoir à tous,

Alors voila j'essaie de faire un script avec un raw pour detecter la connexion des users et les sajoins apres 5 seconde sur le salon accueil.
Voila le code.
tcl
set chan(sajoin) "#Accueil"
 
bind raw - "NOTICE" sajoin:connexion
 
proc sajoin:connexion {from key arg} {
putlog "lancement proc ok"
 set type [lrange $arg 4 5]
putlog "set type ok"
 set pseudo [lindex $arg 6]
putlog "set pseudo ok"
if {$type == "Client connecting:"} {
putlog "set if type ok"
   set foo [list [utimer 5 sajoin $pseudo $chan(sajoin)]]
putlog "sajoin ok"
 }
}


J'ai mis des putlog pour voir d'ou venais le problème.
Code :
[22:19:11] lancement proc ok
[22:19:11] set type ok
[22:19:11] set pseudo ok
[22:19:11] -NOTICE- *** Client connecting: PetitCoeur (~PetitCoeur@*********.fr) [**.***.**.**] {clients}
Il semblerais que le problème vienne du if mais je ne vois pas comment régler le problème...

Merci pour votre aide future.

Bien à vous. :)

Bye.
Répondre Avertir
#2
Peux-tu faire un retour de $pseudo ?
putlog "Set pseudo : $pseudo"

et mettre comme syntax: $::chan(sajoin) au lieu de $chan(sajoin)

merci
Répondre Avertir
#3
@Dixit merci pour le putlog grace a toi j'ai réussie a debug une parti de mon script et j'avas oublié de mêtre le global donc voici le code modifié.
tcl
set chan(sajoin) "#Accueil"
 
bind raw - "NOTICE" sajoin:connexion
 
proc sajoin:connexion {from key arg} {
  global chan
putlog "lancement proc ok"
  set type [lrange $arg 4 5]
putlog "set type ok"
  set pseudo [lindex $arg 4]
putlog "set pseudo : $pseudo"
	if {$type == "Client connecting:"} {
putlog "set if type ok"
    set foo [list [utimer 5 sajoin $pseudo $chan(sajoin)]]
putlog "sajoin ok"
  }
}


Donc maintenant le pseudo est bien détecté par contre le bot ne sajoin pas et je n'ai aucun message d'erreur en telnet avec le bot ...
le problème serais sur le if je pense mais je ne vois pas comment régler le problème...
Code :
[23:53:48] Userfile loaded, unpacking...
[23:53:59] lancement proc ok
[23:53:59] set type ok
[23:53:59] set pseudo : PetitCoeur
[23:53:59] -NOTICE- *** Client connecting: PetitCoeur

Merci d'avance.

Bye. :)

EDIT:
J'ai donc utiliser le même procédé pour voir si la variable "type" était bonne et effectivement elle ne l'était pas. Voici le code modifier.
tcl
set chan(sajoin) "#Accueil"
 
bind raw - "NOTICE" sajoin:connexion
 
proc sajoin:connexion {from key arg} {
  global chan
putlog "lancement proc ok"
  set type [lrange $arg 2 3]
putlog "set type : $type"
  set pseudo [lindex $arg 4]
putlog "set pseudo : $pseudo"
	if {$type == "Client connecting:"} {
    set foo [list [utimer 5 sajoin $pseudo $chan(sajoin)]]
  }
}


Et le message d'erreur en telnet avec le bot :
Code :
[00:21:59] lancement proc ok
[00:21:59] set type : Client connecting:
[00:21:59] set pseudo : PetitCoeur
[00:21:59] Tcl error [sajoin:connexion]: wrong # args: should be "utimer seconds command ?count?"
[00:21:59] -NOTICE- *** Client connecting: PetitCoeur
Donc le problème viens du utimer si j'ai bien compris je me suis servis du wiki pour le utimer https://wiki.eggdrop.fr/Utimer
J'avoue que la je ne vois pas du tout comment faire...

Merci d'avance.

Bye. :)

Edit 2
Résolue j'ai travaillé sur le utimer fonctionne parfaitement mnt
tcl
set chan(sajoin) "#Accueil"
 
bind raw - "NOTICE" sajoin:connexion
 
proc sajoin:connexion {from key arg} {
  global chan
  set type [lrange $arg 2 3]
  set nick [lindex $arg 4]
	if {$type == "Client connecting:"} {
    utimer 5 [list putquick "sajoin $nick $chan(sajoin)"]
  }
}


Encore merci dixit pour ton aide :)

Bien à vous.

Bye. :)
Répondre Avertir


Atteindre :


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