Un Bot IRC en PERL pour Orange/Voilà [Résolu]

Signaler
Messages postés
20
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
26 octobre 2009
-
Messages postés
20
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
26 octobre 2009
-
Bonjour tout le monde,

   Bon, je sens que je vais passé pour un noob .. et vous n'auriez pas tout à fait tord :x

   Ceci étant, je vais être assez direct :x
   Je souhaite développer un Bot IRC en PERL pour se connecter sur le nouveau t'chat Orange/Voilà.
    
   Pourquoi le PERL me diriez-vous !? euh, bah c'est un langage que je connais pas trop mal ... enfin les bases quoi, mais pas l'utilisation de la librairie Net::IRC, qui est une librairie PERL reconnue mais dont j'ignore tout :x
   Donc j'ai commencé par aller voir ce tuto : http://www.squalenet.net/fr/pc/articles/ecrire-un-bot-irc-en-perl-part1.php5 mais il ne traite pas de la connexion sur le serveur Orange/Voila :x

Voila, si quelqu'un a une solution, je suis tout ouïe
Par avance, merci beaucoup...

   

7 réponses

Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
4
Pour la connexion sur Orange/Voila, le problème qui va se poser c'est l'obtention d'une clé : soit le pseudo de ton bot est enregistré, et cette clé devrait être fixe (si ca n'a pas changé, je ne vais plus là bas), soit ce n'est pas le cas, et là je botte en touche (des générateurs existent, mais ils violent les CGU de ce serveur donc j'éviterai d'en parler). Si ton bot est enregistré, donc, il faut regarder du côté de Net::IRC comment envoyer un "PASS" au serveur à la connexion. D'après la doc, un simple "password" => "ta_clé" dans ton "newconn" devrait suffire, à tester...

J'avais fait un bot il y a quelques temps, très basique, avec Net::IRC, mais de mémoire j'avais laché ça au profit de POE::Component::IRC (trouvable facilement sur le CPAN), qui est tout objet et plutôt plus abouti. Je me souviens avoir eu des difficultés à créer une PL avec les deux, mais je suis assez mauvais en Perl j'avoue... Il y a un cookbook minimaliste ici : http://poe.perl.org/?POE_Cookbook/IRC_Bots si ça t'intéresse, ça te permettra d'appréhender la chose. De mémoire encore, il y avait un petit bug dans le .pm fourni, un mauvais handle des kicks qui se corrige très facilement pour peu que tu aies fais une fois du Perl dans ta vie.
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
4
Dans un PRIVMSG ou une NOTICE, tu dois mettre un ":" pour préciser que tu vas commencer une phrase et que l'espace n'est plus le séparateur des arguments (sinon seul ton premier mot arrive). Je suppose que c'est ce ":" que tu vois arriver dans tes logs.

Pour écrire en couleur, il faut utiliser une syntaxe spécifique à l'IRC (je ne l'ai jamais vu ailleurs, même si on parle "d'ANSI codes").
En numéro ASCII :
- le charactère "2" ca active ou désactive le gras
- le 31 idem pour le souligné
- le 15 remet tout à zéro (si tu étais en gras tu repasses en normal, idem pour les underline, idem pour les couleurs)
- le 3 suivi d'un nombre entre 0 et 15 (de tête) + éventuellement une virgule et une couleur de fond (entre 0 et 15 toujours) permet d'écrire en couleur
- le 22 permet d'inverser noir et blanc (très peu utilisé)

Pour faire ça en Perl, tu as une fonction "chr(<numéro>)" il me semble, et tu as peut-être une manière de les rentrer dans les chaines entre double quotes, avec un truc genre \x<numéro> mais je ne suis plus très sûr, je confonds peut-être.

Bonne continuation !
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
4
Le problème c'est la récupération de la page ou le parsing de l'arbre XML ?

Si le problème est le parsing, je n'en ai jamais fait avec Perl, mais il doit y avoir des bibliothèques pour ça  : j'ai trouvé ça http://maspalio.free.fr/JP2005.pdf ça a l'air assez complet et intéressant. Et au pire, tu peux te faire ton parser toi-même, s'il n'y a pas de sauts de ligne et un node par ligne, ça doit être assez simple ;-)

Bon courage
Messages postés
20
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
26 octobre 2009

Ree ^^

   Bon, je viens aux nouvelles .. avec un bêbête qui commence a tourner gentillement ^^ même sur Voila/Orange ^^ j'ai un pseudo réservé ^^
Par contre j'utilise pas la librairie Net::IRC ni POE::Component::IRC (je connais pas cette dernière d'ailleurs :x), j'ouvre direct une socket avec la librairie 'socket' puis un PING dans un while pour garder la connexion
pour le moment, il traite le voice auto au JOIN avec NOTICE d'accueil.. et euh une commande relative à une webradio :x

   Et donc, nouveau problème .. comment peut-on faire pour écrire avec un code couleur ? j'ai commencé a cherché du côté de l'ASCII, mais sans résultats :x j'comprend pas le ':' dans le ':09,12blablabla' que je vois sur les logs :x

Si quelqu'un a un idée ...   ça serait cool 
Par avaannce mercii 
Messages postés
20
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
26 octobre 2009

Okayy Pada, Merciii beaucoup, ça marche impeccable ;)
Pada +10pts :D ..... ou Moi -5pts :x à voir..
Merci encore, je reviendrai :p
Messages postés
20
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
26 octobre 2009

Toc, Toc,
   PaDa, encore là ? ^^

   Bon, c'est tout autre chose aujourd'hui, mais ça va commencer a être assez spécifique :x
   J'aimerais récupérer des données XML disponibles sur page CGI 
   je m'explique..
   J'ai un service 'shoutcast' qui tourne sur le serveur, qui met donc des données en ligne sur une page CGI/XML  (ex : http://nom_de_domaine:port/admin.cgi?mode=viewxml ) qui me retourne un truc sous cette forme :
-------------------------------------------------------------------------------------------------------------------
Ce fichier XML ne semble pas avoir d'information de style associé avec lui. L'arbre du document est montré ci-dessous.     
-
<SHOUTCASTSERVER>
<CURRENTLISTENERS>...</CURRENTLISTENERS>
...

<MAXLISTENERS>...</MAXLISTENERS>
<REPORTEDLISTENERS>...</REPORTEDLISTENERS>
...
<SERVERGENRE>..........</SERVERGENRE>
<SERVERURL>...........................</SERVERURL>
<SERVERTITLE>.......</SERVERTITLE>
<SONGTITLE>............................................................</SONGTITLE>
-------------------------------------------------------------------------------------------------------------------
donc, j'ouvre une socket en local sur le port du shoutcast, et donc je cherche a récupérer les variables dans un tableau '@var' dans ma socket principale 
et euh, c'est tendu, i'm a noob
une idée ?
Messages postés
20
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
26 octobre 2009

Ree,

   Bon, j'ai trouvé une solution de contournement ^^ j'utilise un p'ti outil en PHP qui me file toutes les stats du shoutcast sur une page PHP, et donc avec 'WWW::Mechanize' j'arrive a parser ma page et a recupérer mes variable

   Par contre, j'ai un autre problème :x quand je fais joindre mon bot sur plusieurs chan, il lague a mort :x

   Donc, je pensais utilisé les "thread", du genre ouvrir ma socket sur le server irc dans le programme principal puis ouvrir une "thread" par salon !?!? j'ai commencé a me documenter ici mais je comprends pas tout :x
  
   En fait je cherche a ouvrir plusieurs thread simultanément et que chaque thread renvoie ses valeurs au prog principal pour traitement.

   Le problème, c'est de ce que j'ai compris de la doc que j'ai lu, en lançant une thread en mode 'detach', on ne peut pas en récupérer les valeurs de retour dans le programme principal :x

   Une idée ?? :x
   Merciii d'avance ^^