Cela faisait quelques temps que l'idée de développer en langage Perl me titillait. J'avais déjà écrit
des petits scripts pour automatiser des tâches, mais pas de programme vraiment conséquent.
Une autre chose qui m'intéressait était le fonctionnement de bots sur
IRC, ces programmes "roBOTS" destinés à interagir avec les autres utilisateur d'un canal IRC, et vus comme des utilisateurs normaux. Leurs rôles
sont très variés : afficher automatiquement un message de bienvenue aux nouveaux connectés, afficher de l'aide, modérer le canal en filtrant les insultes et en éjectant les floodeurs, etc. Tout
dépend de ce que le programmeur de ce bot veut bien lui faire faire.
Bref, j'avais ces deux idées en tête, et il se trouve que, bien que l'on puisse créer un bot IRC dans n'importe quel langage de
programmation, le langage Perl s'y prête particulièrement bien.
Je me suis donc attelé il y a quelques jours à la programmation en Perl d'un bot IRC pour le canal #hordes.fr, afin d'apporter un peu d'animation et quelques commandes bien pratiques.
Ce canal dont
j'ai déjà parlé à de nombreuses reprises sur ce blog regroupant des joueurs de Hordes, je m'étais dit qu'il serait intéressant de faire en sorte que le bot puisse leur donner des renseignements
sur les villes dans lesquelles se trouvent leurs personnages. Mon bot passe son temps à écouter ce qui se dit sur le canal. Quand dans le texte il repère certains mots clés, alors il réagit en
affichant quelque chose.
Si par exemple un utilisateur du canal tape !hordes, alors le bot affiche si le jeu www.hordes.fr est actuellement ouvert, ou fermé en raison de l'attaque des zombies durant la nuit. Très pratique pour savoir si l'attaque est enfin terminée et si l'on
peut retourner jouer. La commande !porte permet de savoir si la porte de la ville du joueur est fermée ou non, la commande !defense affiche le nombre de
points de défense de la ville, !ou affiche les coordonnées de la position du joueur, !eau affiche le nombre de rations d'eau restantes,
!estimation une estimation de l'attaque pour la nuit qui vient, etc. J'ai ainsi écrit une trentaine de commandes auxquelles le bot peut réagir.
Le bot réagit aussi à des balises telles que [d6], [d20], [d100] pour tirer un dé à
6, 20 ou 100 faces, [pf] pour tirer à pile ou face, [pfc] pour afficher pierre, feuille ou ciseaux, [paullepoulpe] ou [plp]
pour afficher oui ou non, [carte] pour tirer une carte au hasard parmi 52.
J'ai dressé une liste de toutes les commandes et balises sur cette
page.
J'ai appelé ce bot LeCorbeau, du nom du gardien emblématique des forums de Hordes. En plus des commandes et balises,
je le fais réagir à d'autres mots clés pour lui donner un peu de vie et mettre un peu d'animation. Et attention, il a un sale caractère
De manière pratique, toutes les commandes en rapport avec le jeu Hordes nécessitent que celui qui les tape porte le même pseudo sur IRC
que dans le jeu. Si ce n'est pas le cas, il suffit de taper son pseudo du jeu (ou le pseudo d'un autre joueur si on veut des renseignements sur lui) à la suite de la commande. Par exemple :
!ville stravingo au lieu de simplement !ville pour connaitre le nom de la ville dans laquelle se trouve mon personnage.
Pour tester le bot, rendez vous sur le canal #hordes.fr et tapez les commandes. La commande
!aide vous affichera une liste de toutes les commandes disponibles, dont vous retrouverez le détail sur cette
page.
Un conseil : si vous tapez directement les commandes, elles
apparaitront ainsi que leur résultat dans la zone de conversation commune. Pour éviter d'importuner tout le monde, vous pouvez taper les commandes dans une fenêtre de conversation privée avec le
bot, obtenue après avoir tapé : /query LeCorbeau.