Documentation - Installation de LazyBot (Français)
Transcription
Documentation - Installation de LazyBot (Français)
Documentation - Installation de LazyBot (Français) Florian Metton) 26 juin 2015 Table des matières I Usage général 1 1 Installation et configuration 1.1 Télécharger le bot . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Configurer le bot . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 2 Des plugins partout 4 3 Contenu de settings.ini 5 4 lazybot2.py arguments 6 II 7 Pour les développeurs 5 Création de plugins 5.1 Les bases . . . . . . . . . . . . . . . . . . . 5.1.1 Template d’un module . . . . . . . . 5.1.2 La méthode de chargement loadinit . 5.1.3 La classe Module . . . . . . . . . . . 5.2 Les signaux . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 9 9 9 9 Résumé LazyBot est un Bot IRC Modulaire utilisant Python. La totalité du code de l’application est sous licence GPLV3. Ce document vous permettra de vous aider dans l’installation du bot IRC. Vous apprendrez dans ce document comment l’utiliser, le configurer, mais aussi comment créer des plugins pour LazyBot. Première partie Usage général 1 Chapitre 1 Installation et configuration 1.1 Télécharger le bot Nous partons du postulat que Python (sur sa version 3) a déjà été installé sur votre machine. Pour commencer, vous devez télécharger LazyBot. Pour ce faire, rendez-vous sur ce site : http://lazybot.lazyone.fr/download.php. Il existe deux versions. La première stable est la dernière version fonctionnelle. Pas forcément la plus récente, mais le meilleur choix. La version On The Fly (ou en vol ) constitue le pendant INSTABLE . Peut fonctionner, mais sans totale certitude (non testé). Une fois le fichier téléchargé, vous devez décompresser le fichier compressé dans un dossier de votre choix. tar zxvf lazybot-stable-44c39eb.tar.gz cd lazybot-stable-44c39eb Sous Windows, vous pouvez utiliser 7zip. Une fois téléchargé, il peut être nécessaire de créer un répertoire data dans le dossier de LazyBot. Ceci n’est plus nécessaire depuis LazyBot 2.0.7 2 1.2 Configurer le bot Une configuration à la main peut être nécessaire. Par défaut, LazyBot se configure sur localhost (port 6667. Mais si vous souhaitez configurer vous même LazyBot avant de le lancer, créez simplement un fichier INI : [main] profile = principal [profile.principal] connect.server = localhost connect.port = 6667 connect.ident = LazyBot connect.realname = LazyBot 2.0.5 - LazyOne Software connect.nick = LazyBot LazyBot_ LazyBot__ Section [main] Clé profile [profile.profil ] connect.server [profile.profil ] [profile.profil ] connect.port connect.ident [profile.profil ] connect.realname [profile.profil ] connect.nick Valeur Il s’agit du profil sélectionné. Vous pouvez en définir un manuellement. Serveur IRC à connecter. (Défaut : localhost). Port à connecter (Défaut : 6667) Il s’agit de l’identité. Elle se situe entre le pseudo et l’host de la personne (nickname !ident@host) Il s’agit du message associé au pseudo qui apparaı̂t quand l’on fait un Whois Il s’agit du/des pseudos du bot. Vous pouvez en définir plusieurs séparé par des espaces. Si le premier est utilisé, il passera au second et ainsi de suite. Certain plugins incluent leur propre configuration dans settings.ini. Référez vous à leur documentation associée pour plus de renseignement. Adaptez les valeurs selon vous convenances, puis, sauvegardez votre fichier. A présent, si vous lancez le bot, il devrait se connecter sans encombre sur IRC. Félicitation votre bot est installé ! 3 Chapitre 2 Des plugins partout LazyBot peut supporter une vaste collection de plugins. Allant du Quizz au bot de statistiques, tout est possible. Il existe en général plusieurs types de plugins : — Des plugins standards qui se contentent simplement de faire des choses. Ils émettent souvent des signaux. — Des plugins de composant principal (ou core) qui n’émettent quasiment jamais (ou peu) de signaux. — Des plugins Wrappers qui permettent d’interface un plugin standard a un composant principal. Ils reçoivent et émettent des signaux. Exemple concret : Un bot de quizz, pose des questions. Quand un utilisateur donne une bonne réponse, il émet un signal GOODRESPONSE. Mais ne donne aucun points. Un autre module, gère une sorte de monnaie virtuelle. Un Wrapper spécifique pour le Quizz vers Monnaie virtuelle, va réceptionner les signaux GOODRESPONSE pour les transmettre au module de monnaie, qui va alimenter le compte virtuel de l’utilisateur. Peu importe leur style, ces modules doivent être mis dans le répertoire ./modules/lazybot (dans le répertoire de LazyBot). Des modules officiels et/ou validés, peuvent être trouvés ici http://lazybot. lazyone.fr/modules.php Nous mettons tout en œuvre pour filtrer les modules dangereux pour LazyBot. Toutefois, sachez que nous ne pouvons être responsable quant à l’installation d’un plugin tiers douteux. Nous appelons donc à votre plus grande vigilance. Pour leur installation et configuration, nous vous invitons à consulter la documentation fournit avec le module en question. 4 Chapitre 3 Contenu de settings.ini Cette section va traiter du fichier de configuration. Avant de commencer, sachez que le bot se base sur un système de profil. Un profil est un ensemble de configuration. Pour switcher d’un profil à un autre, il suffit de modifier la valeur profile dans [main] . Par exemple vous créez un profil pour : — Utiliser plusieurs connexions sur plusieurs serveurs (Voir les arguments plus bas). — Utiliser un profil de test pour faire vos essais. Voilà un exemple de fichier de configuration vide. [main] profile = principal [profile.principal] connect.server = localhost connect.port = 6667 connect.ident = LazyBot connect.realname = LazyBot 2.0.5 - LazyOne Software connect.nick = LazyBot LazyBot_ LazyBot__ 5 Chapitre 4 lazybot2.py arguments Pour le moment, LazyBot2 ne supporte pas d’arguments. Cela devrait changer dans la version 2.0.8. 6 Deuxième partie Pour les développeurs 7 Chapitre 5 Création de plugins Cette partie traite de la création de plugins pour LazyBot. Nous verrons les bases et la création de nouveaux modules. Nous considérerons que vous connaissez déjà Python, ainsi que le principe de la programmation orienté objet, 5.1 Les bases Un module contient plusieurs choses : — Un fichier .py — Une méthode de chargement loadinit — Une classe Module() Quand un module est chargé dans LazyBot, il envoie l’instance de lui même dans la classe Module(). Cette instance peut être récupérée par le module, permettant ainsi l’accès aux méthodes et attributs du composant principal. Les modules communiquent par Signaux. Les modules doivent associer leur méthodes à ces signaux (par exemple, quand un utilisateur join un canal, un signal est envoyé aux modules). 8 5.1.1 Template d’un module Un module minimaliste est très simple : def loadinit(mh): return True name = "Template" version = "2.0" description = "Module Template" author = "Author <mail@mail>" class Module(): def __init__(self, mh): self.mh = mh self.mh.listensignal("CMESSAGE", self.parsemessage) def parsemessage(self, user, channe, message): if self.channel == "#test": self.mh.send("PRIVMSG #test :%s a dit %s !" % (user.getName(), message)) self.mh.emitsignal("RECEIVED", message) Dans cet exemple, le module écoute tous les messages des canaux de discussion du canal #test. Dés qu’il reçoit un message, il répond et envoie un signal RECEIVED. Le signal Received peut être écouté par un autre modules. 5.1.2 La méthode de chargement loadinit Nous allons nous attarder sur la méthode loadinit. Cette méthode est appelée juste avant l’instanciation de Module() par le composant principal. L’instance du composant principal est passé en premier argument, permettant ainsi d’avoir accès à toute les informations du client. Elle doit retourner True pour valider le chargement du module. Sans quoi, Module() ne sera pas instancié. ATTENTION toutefois, cette méthode doit exister d’une façon ou d’une autre, sinon le composant principal considérera le résultat comme False. 5.1.3 La classe Module La classe Module() est la classe principal du module. Rien ne vous empêche de créer d’autre classes, mais Module() sera le centre névralgique du Module. 9 5.2 Les signaux Cette partie traite les bases des signaux que LazyBot envoie au plugin. TODO : ... Liste des signaux ici ... 10