URL: https://linuxfr.org/news/irccd-le-robot-irc-scriptable-en-lua-grandit Title: irccd, le robot IRC scriptable en Lua grandit Authors: David Demelier bubar🦥, Florent Zara et palm123 Date: 2014年02月11日T12:55:58+01:00 License: CC By-SA Tags: irc_bot et lua Score: 23 Après plusieurs mois de travail, une nouvelle version du robot irccd voit le jour. Rappelons qu'Irccd est un _bot_ IRC écrit en C++ et Lua. Il fonctionne tel un _daemon_ qui attend tranquillement des événements (pour y réagir ou pas) tels les messages, les changements de topic, les arrivées et départs sur un channel, etc. Il est aussi possible de contrôler le _daemon_ irccd avec l'outil `irccdctl` qui permet d'envoyer des requêtes ou des messages sur un channel, etc. Irccd présente la particularité d'être extensible via des plugins en Lua. ![IRC Client Daemon](http://projects.malikania.fr/irccd/css/robot.png) La suite de la dépêche fait un tour des nouveautés de ce robot IRC pas banal. ---- [Page officielle](http://projects.malikania.fr/irccd/) [Page de téléchargement](http://projects.malikania.fr/irccd/download.php) [Documentation](http://projects.malikania.fr/irccd/documentation.php) [Annonce en anglais](https://redmine.malikania.fr/news/10) [Statistiques Ohloh](http://www.ohloh.net/p/irccd) ---- L'API Lua --------- L'API Lua est celle qui a reçu le plus de changements. ### Possibilités de threader Alors qu'irccd fonctionnait toujours par un système basé sur un évènement, il est maintenant possible de faire des plugins autonomes grâce à une toute nouvelle API de thread. Chaque thread crée un nouveau contexte Lua qui ne partage aucune donnée avec son parent. Il est alors nécessaire de passer par une api de "message" similaire à celle de [löve](http://www.love2d.org/wiki/Channel) Les API associées sont : - [irccd.thread](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.thread.html) - [irccd.thread.pipe](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.thread.pipe.html) Voici un exemple de ce qu'il est maintenant possible de faire avec ces threads : markand: !bomb xrg irccd: xrg, you have the bomb, type !bomb to pass xrg: !bomb Peuc irccd: Peuc, you have the bomb, type !bomb to pass Peuc: !bomb markand irccd: markand, you have the bomb, type !bomb to pass irccd: markand, BOOM L'explosion a eu lieu parce que le dernier utilisateur n'a pas passé la bombe assez rapidement. Ce plugin n'est actuellement pas sorti avec irccd 1.1 ### Gestion des fichiers et du système Avant, le module irccd.util contenait l'essentiel des fonctions générales. Maintenant deux nouveux modules ont été dédiés à la gestion des fichiers et du système. - [irccd.fs](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.fs.html) - [irccd.system](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.system.html) Exemple avec un plugin en cours de création : markand: !system version irccd: the system version is 10.0-RELEASE ### Les sockets Trois nouveaux modules voient le jour aussi, il s'agit des sockets. Ces derniers vont permettre de se connecter à des services complètement indépendants comme un serveur web, mail, etc. Cette API tente d'être le plus proche de l'API C. En revanche, la gestion des adresses et d'un serveur d'écoute est facilitée. - [irccd.socket](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.socket.html) - [irccd.socket.address](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.socket.address.html) - [irccd.socket.listener](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.socket.listener.html) Améliorations générales ----------------------- ### Reconnexion automatique Une des fonctionnalités les plus demandées était la reconnection automatique. Le robot va maintenant tenter de se reconnecter toutes les trente secondes, indéfiniment. Par contre, il n'y a pas encore de moyen de détecter le crash d'un serveur IRC. Pour pallier ce problème, irccdctl est doté d'une fonction _restart_ qui permet de forcer la reconnexion d'un serveur. Ces paramètres sont optionnels et peuvent être définis dans la section du serveur : [server] # ... comme avant ... reconnect-tries = "10" # essaye de se reconnecter 10 fois reconnect-timeout = "20" # attend 20 secondes avant de réessayer ### Connexion en temps réel Il est maintenant possible de se connecter à un nouveau serveur soit par [l'API](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.server.html#connect), soit par irccdctl. ### Formatage de texte Pour ceux qui désirent écrire en couleurs ou en gras, c'est désormais possible grâce à la fonction [util.format](http://projects.malikania.fr/irccd/doc/lua/modules/irccd.util.html#format). Cette dernière permet de s'affranchir des caractères d'échappements fastidieux. Côté plugins ------------ ### Plugin d'authentification Un nouveau plugin d'authentification [Auth](http://projects.malikania.fr/irccd/doc/guides/plugin-auth.html) permet de s'identifier automatiquement auprès de NickServ ou Q. Autres changements ------------------ - La bibliothèque C constituant les évènements IRC [libircclient](http://www.ulduzsoft.com/libircclient/) est maintenant intégrée et n'est plus nécessaire. - La fonction onMe a été ajoutée - Possibilité d'utiliser LuaJIT comme alternative à Lua 5.2

AltStyle によって変換されたページ (->オリジナル) /