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.
La suite de la dépêche fait un tour des nouveautés de ce robot IRC pas banal.
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
Les API associées sont :
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 <target> to pass
xrg: !bomb Peuc
irccd: Peuc, you have the bomb, type !bomb <target> to pass
Peuc: !bomb markand
irccd: markand, you have the bomb, type !bomb <target> 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.
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.
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, 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. 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 permet de s'identifier automatiquement auprès de NickServ ou Q.
Autres changements
- La bibliothèque C constituant les évènements IRC 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
Aller plus loin
- Page officielle (200 clics)
- Page de téléchargement (32 clics)
- Documentation (33 clics)
- Annonce en anglais (16 clics)
- Statistiques Ohloh (23 clics)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.