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


Erreur inconnue et non signalée
#1
Bonjour a tous , c'est ma premiére participation sur ce forum , j'ai un petit soucis avec mon bot , le code est bien fait (j'en suis pas sur) mais il réagis pas a la commande , il detecte rien en pl .... au debut un membre du forum (Heretoc) m'a dit que c'etait peut étre en rapport avec les droits de lecture/ecriture sur le fichier mais c'etait pas le cas , voici le code , merci de me dire s'il vous plait d'ou vient l'erreur:


tcl
bind pub - !connect connects
proc connects { nick uhost handle channel arg } {	
	putquick "NOTICE $nick :\0033..:Liste des connexions:.."
	catch {open "./scripts/connect.db" "r"} connexion
	set num 0
	while {![eof $connexion]} {
	gets $connexion verif
	if {$verif ne ""} {incr num 1;putquick "NOTICE $nick :\0034 $num -->\0033 [lrange $verif 0 end] \r"}
	}
	if {$num eq "0"} {putquick "NOTICE $nick :\0034Aucune connexion dans la base de donnée ! \r; return 0"}
	putquick "NOTICE $nick :\0033Fin de la Liste (\0034 $num \0033connexion(s) enregistré(s))"; return 0
	catch {close $connexion}
}




ps: méme avec des petits codes il réagis pas .... :


tcl
bind pub - !test v_test
proc v_test { nick uhost handle channel arg } {	
putfast "privmsg #serveur : ok "
}



Bonne journée a tous :)
#2
re, par contre j'aimerai bien avoir d'autres formats de commandes , par exemple:
!connect pseudo "il me donne les ip qui ont déjà été utilisées par ce pseudo"
!connect ip "il me donne les pseudo utilisés avec l'adresse ip"
avec le même fichier data ... , j'ai essayer plusieurs choses , mais ca a l'air inutile vue que le bot ne fait rien :s

j'espère que vous pourriez m'aider svp :)
#3
On va essayer de traiter une chose à la fois, ce sera plus simple.

Tout d'abord, mets un maximum de putlog dans ta procédure connects pour voir où tu passes et où tu ne passes pas.
Ensuite, je te déconseille d'utiliser channel dans l'appel de ta procédure, ça me semble être un mot-clé réservé. Utilise plutôt chan.

Une fois tout ceci fait, tu auras surement plus de détails sur ce qui bloque et on pourra passer à la suite.
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#4
re CrazyCat j'ai essayer ce que tu m'as conseiller mais ça ne donne tjrs aucun resultat ni en pl ni en salon ...
#5
Tapes .binds pub en PL et tu verras si tes binds sont bien là.
Question très stupide: tu charges bien tes scripts ?
irc.zeolia.net - Offrez-moi un café
Merci de ne pas demander d'aide en MP
Away
#6
Oui , je les changes bien , mais aprés avoir taper .binds pub , les binds de ce scripts sont introuvables
#7
j'ai méme esssayer avec ça :


tcl
bind pub - !connect connects
proc connects { nick uhost handle chan arg } {
#putquick "privmsg $chan :\00302connexions/ pseudo /dates"
set connectlog [open "./scripts/connect.db" "r+"]
set cn "\002\00306*\002"
set contenu [ read -nonewline $connectlog]
foreach g_connect [split $contenu "\n"] {
putquick "privmsg $chan :$cn \00312$g_connect"
}
}


ça donne tjrs rien

Edit par CrazyCat: Merci de penser à utiliser les balises [ TCL ] et [ /TCL ] (sans les espaces)
#8
salut,
si tu tapes en pl

Code:
.tcl set errorInfo
ca te retourne quoi?
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#9
Ca me met une erreur qui est au debut du script (une erreur que je viens juste d'avoir , avant elle n'y etait pas)


‹10:14:19› <Hestia> Tcl: can't read "connexion": no such variable
‹10:14:20› <Hestia> Tcl: while executing
‹10:14:20› <Hestia> Tcl: "puts $logfichier "$connexion""
‹10:14:20› <Hestia> Tcl: (procedure "connection:notice" line 13)
‹10:14:20› <Hestia> Tcl: invoked from within
‹10:14:20› <Hestia> Tcl: "connection:notice $_raw1 $_raw2 $_raw3"
#10
re teste ta commande !connect et retape celle que je t ai donné juste après
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#11

tcl
bind raw - NOTICE sconnexion
proc sconnexion {from key arg} {
global botnick notc mod ctime
   set text [split $arg] 
   if {[join [lrange $text 2 5]] == "Notice -- Client connecting"} {
     set g_nick [lindex $text 9]
      set g_user [string range [lindex [split [lindex $text 10] "@"] 0] 1 end]
      set g_host [string range [lindex [split [lindex $text 10] "@"] 1] 0 end-1]
   set g_userhost "$g_nick!$g_user@$g_host"
   set connexion "$g_nick $g_host $ctime"
    putfast "PRIVMSG #serveur :\00301Connexion de:\00303 $g_nick \00301sous le host \00301$g_user\00304@\00301$g_host"
	}
   set logfichier [open "./scripts/connect.db" "a+"]
   puts $logfichier "$connexion"
   close $logfichier
   }
   return 0
   }
}



Il me detecte l'erreur dans la ligne 7 (une variable qui fonctionne trés bien dans le code) essaie le pour confirmer si tu veux, mais a chaque fois que je connecte un pseudo il me sort

Edit par CrazyCat: Merci de penser à utiliser les balises [ TCL ] et [ /TCL ] (sans les espaces)
#12
C'est bon , ça fonctionne :) merci beaucoups a vous
#13
re CrazyCat , s'il te plait pour mon 2éme but j'ai penser faire une sorte de lecture inversée mais ça a l'air trés compliquer , j'aimerai bien avoir des renseigenements , ou que quelqu'un me guide pour commencer ce code, par exemple comme j'ai expliquer plus haut:
!connect pseudo "il me donne les ip qui ont déjà été utilisées par ce pseudo"
!connect ip "il me donne les pseudo utilisés avec l'adresse ip"
avec le méme fichier .db
avec les données qui sont enregistré de cette facon
Nyx 41.104.1.79 17:47 21.03.2011

Merci :)
#14
salut,

Sans grande pretention, mis les fonctions de seen.tcl, ou tapavu.tcl, feraient pas ce que tu cherches ?Et en adaptant le code ou lelieu ou irait chercher le bot te feraient peut etre aboutir à ce que tu recherche.

Cordialement.
#15
Salut, Non c'est pas la même chose , par ce que le seen et le tapavu ne gardent pas l'historique des connexions (ip/pseudo) mais ils gardent juste l'heure et la date.
ce que je veux c'est juste une façon de lire les données soit avec le pseudo soit avec l'ip genre
si on met
set pseudo [lindex $arg 0] ça nous sort les ip qui sont dans les mémes lignes que le pseudo et le contraire avec
set ip [lindex $arg 0] pour nous données les pseudos qui étaient utilisées avec l'ip demandée
merci cestlemien :)


Forum Jump:


Users browsing this thread: 1 Guest(s)