Pb de if() pour bot Perl

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011 - 27 déc. 2007 à 12:03
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011 - 27 déc. 2007 à 13:16
Bonjour à tous, ma question est très simple : quelqu'un sait-il comment coder en Perl l'hypothèse de la présence d'un user sur un salon IRC ? C'est en gros, l'équivalent de if (Pseudo isin $chan) [en mirc]. J'ai beau chercher partout, il y a très peu d'aide sur les bots IRC en Perl... Merci bien.

PS: au pire je peu faire un foreach mais je ne sais pas non plus comment coder l'équivalent de $nick(#,) [en mirc].

Cordialement, uaip.

5 réponses

cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
27 déc. 2007 à 12:24
Lorsque tu fais un "if ($nick ison #salon)" en mIRC, mIRC va puiser dans des listes internes qu'il tient à jour de deux façons : à ton entrée dans le salon, via un retour de /names, et ensuite avec les join/part/quit/kill qu'il voit passer. Si tu demandes à mIRC de retenir en plus des pseudos les hosts, on parle de l'IAL, pour info..

Donc en Perl, il faut te coder ça toi-même, pour résumer. Tout dépend ensuite de ce que tu utilises comme module. Si tu restes assez "bas niveau", avec du IO::Socket par exemple, tu n'auras pas ce genre de fonctions prédéfinies à ta disposition. En revanche, si tu utilises des modules déjà faits pour l'IRC (par exemple POE::Componenent::IRC, (ou Net::IRC plus vieux je crois)) dans ce cas il y a sûrement cette fonction déjà incorporée dans le module.

J'avais fait un bot en POE::Component::IRC, mais il n'apportait rien de significatif par rapport à ce que tu pourras trouver ici : http://poe.perl.org/?POE_Cookbook/IRC_Bots

Plus d'infos :
- http://poe.perl.org/?POE_Cookbook (section "IRC Programming")
- http://search.cpan.org/~fimm/POE-Component-IRC-2.9/IRC.pm (à noter que la dernière fois où je l'ai testé, j'ai trouvé un bug qui faisait planté le bot lors de l'utilisation du handle sur les kicks salon, je n'ai pas pris le temps de détailler et de remonter à l'auteur, mais j'avais trouvé comment évité ça, si tu rencontres un souci n'hésite pas)

Je dois encore avoir quelques trucs qui trainent si tu veux je les posterai ici également...
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
27 déc. 2007 à 12:26
s/Componenent/Component/;
s/planté/planter/;
s/évité/éviter/;

J'ai honte, j'aurai dû me relire, désolé ^^
0
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
27 déc. 2007 à 12:29
Lol, t'inquiète, deja merci beaucoup :)
oui, j'avais oublié de préciser j'utilise Net::IRC (honte à moi de ne pas l'avori dit).
Je vais regarder tout ca, merci.

Cordialement, uaip.
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
27 déc. 2007 à 13:07
Si mes souvenirs sont bons avec Net::IRC tu vas devoir faire une partie du boulot à la main..
Bon courage !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
27 déc. 2007 à 13:16
Nan mais même avec Net::IRC ca va être chiant ^^.
Le bot gère des stats, antiflood, etc donc il doit analyser toutes les phrases dites sur les salons. En fait je veux simplement "protéger" les salons officiels de quelques commandes qui pourraient flooder. Mais j'ai l'autorisation d'amener le bot quelques fois
sur les chans off pour l'aide. Donc je voulais simplement détecter "si l'eggdrop général (yen a toujours un présent sur tous les chans off d'un serveur) est dans le salon, certaines commandes s'annulent".
Mais deja que j'utilise beaucoup de ressources pour les stats et autres (écrire dans des fichiers, etc) je préfere ne pas trop pousser non plus :s, surtout que mon niveau est + que déplorable en Perl.

Cordialement, uaip.
0
Rejoignez-nous