plusieurs question en 1 - Version imprimable +- Communauté Eggdrop (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) +--- Sujet : plusieurs question en 1 (/showthread.php?tid=915) |
plusieurs question en 1 - tedcampa - 21/03/2011 Bonjour comme mon titre l'indique j'ai plusieurs questions sur lesquelles je me casses un peu les dents. Vos lumières pourront à coup sur éclairer mon chemin dans les arcanes obscurs du codage TCL. ### 1er Question ### Je suis entrain de coder un système de messagerie par eggdrop donc les commande sont : - !memo list : pour lister les memo non lu - !memo lire <id du memo> : pour lire le dit memo - !memo envoi <destinataire> <le message> : pour envoyer un memo j'arrive bien a extraire les 2 premiers mots avec les commandes Code : set action [lindex 0 0] mais je bloque sur le 3e arguments <le message>... j'arrive a obtenir le 1er mot ou le dernier mais pas tout le message. Pouvez vous m'aiguiller ###2e question ### Comment limiter la possibilité d'envois de message uniquement aux personnes qui sont enregistrées dans mon nickserv (anope) ? ### 3e question ### j'avoue que la je quitte un peu le domaine des eggdrop mais une idée serais la bienvenue a terme je compte mettre en place un site internet en liaison avec le chat. et j'aimerais que mes utilisateurs n'aient pas a s'inscrire 2 fois donc est il possible de faire communiquer les 2 mondes ? je voudrais que lorsque l'utilisateur s'inscrit dans la base nickserv son inscription soit reportée sur le site et vice versa. pour info j'utilise mysql dans les 2 cas pour la gestion des enregistrements En vous remerciant par avance d'avoir lu ce post de bout en bout nota... ne me dites pas "le script machin.tcl de untel le fait deja..." perso je ne trouve pas que rajouter ; "load /dossier/des/scripts/machin.tcl" à la fin du eggdrop.conf, soit une bonne methode d'apprentissage RE: plusieurs question en 1 - CrazyCat - 21/03/2011 Je vais essayer de répondre à tes 3 questions Question 1: Ton message s'obtient en faisant: TCL
Question 2: Il faut que tu fasses une interrogation de nickserv (/msg NickServ info $nick) et que tu récupères une ligne permettant de valider que l'utilisateur est enregistré. Mais c'est assez problématique, je reviens à cette question après avoir répondu à la 3ème Question 3: En activant la synchronisation MySQL dans anope, tu auras dans une base MySQL tous les utilisateurs enregistrés sur le réseau IRC. Par contre, ça ne marche que dans un seul sens, anope ne se mettra pas à jour par rapport à ce qui est dans la base. Pour permettre un enregistrement sur le réseau depuis le site web, il faut que tu crées un script PHP qui se connectera automatiquement au serveur IRC et procèdera à l'inscription. J'ai développé un petit script dans ce genre, je vais un peu l'améliorer et je le posterai. Retour sur la question 2: Si tu as une synchronisation anope/mysql, tu peux ajouter dans ton tcl une interrogation de la base mysql pour savoir si l'utilisateur est connu. Si oui, c'est qu'il est enregistré. RE: plusieurs question en 1 - MenzAgitat - 21/03/2011 En ce qui concerne la messagerie, tu peux aussi jeter un oeil à ça : Messages Delivery Service Si ça ne répond pas exactement au cahier des charges que tu donnes, tu peux toujours t'en inspirer. RE: plusieurs question en 1 - tedcampa - 22/03/2011 bon j'avance sur la messagerie mais j'ai un bug quelque part je n'ai toujours pas de message d'enregistré dans ma base mysql ou est le bug ? TCL
commande sur le chan : Code : [01:17:04] <Teddy> !memo envoi teddy ceci est un test long réponse du bot en pv Code : [01:17:06] <Edgar> Votre message a bien ete envoye a teddy contenu de la base mysql [ id ][dest ][date ][message ][etat][ orig] [ 22 ][teddy ][22-03-2011][ ][unread][ Teddy] et aucune erreur en pl Merci de votre aide RE: plusieurs question en 1 - djkenny - 22/03/2011 salut, tu devrais utiliser arg au lieu de args, args est prévu pour lister un nombre indéfini d argument mais eggdrop le fait déjà donc tu te retrouves avec une liste foireuse. Essais de remplacer tous les args par arg et d'utiliser de simple index pour les lindex TCL
edit: n'oublie pas de remplacer tous les lindex en retirant le 1er index "0" TCL
RE: plusieurs question en 1 - CrazyCat - 22/03/2011 As-tu essayé de faire un putlog de $sql et d'envoyer la requête directement dans MySQL pour voir s'il n'y aurait pas une erreur ? RE: plusieurs question en 1 - tedcampa - 22/03/2011 Merci a tous ma fonction messagerie est opérationnelle effectivement le fait de remplacer args par arg et de virer le 1er 0 des "lindex" a fonctionné ->crazycat : la requête MySQL était bonne c'était bien la variable $msg qui n'était pas remplis Encore un grand merci RE: plusieurs question en 1 - djkenny - 22/03/2011 man proc: Citation :If the last formal argument has the name args, then a call to the procedure may contain more actual arguments than the procedure has formals. In this case, all of the actual arguments starting at the one that would be assigned to args are combined into a list (as if the list command had been used); this combined value is assigned to the local variable args. args est le seule argument spécial utilisé en tcl en gros il crée une liste des différent arguments qu'il contient quand arg contient {a b c d} args contiendra {{a b c d}} donc une double liste edit: Code : % proc test arg {return $arg} |