Ceci est une ancienne révision du document !
Limnoria
Limnoria est un logiciel de bot IRC, comme Eggdrop. C'est la reprise de Supybot ; les deux partagent donc la même documentation, mais Limnoria est la version actuellement maintenue à jour.
On peut utiliser des “bots” sur IRC pour diverses utilisations. Nous avons sur le canal #khanat un bot qui enregistre les conversations, ramène les dernières infos de certains flux RSS et est parfois animé de sa propre vie : Pendorid. Ce bot est mis en place grâce au logiciel Limnoria.
Cet article détaille comment gérer un bot avec Limnoria. Il vaut mieux installer Limnoria sur un serveur afin que le bot soit toujours présent ensuite.
Ne mettez pas un bot sur un canal IRC sans l'accord des propriétaire, c'est assez mal vu !
Installation
Installer les paquets python nécessaires :
apt-get install python3 python3-dev python3-pip python-twisted python3-sqlalchemy python3-setuptools python3-feedparser
- Il faut la version supérieure à 17.0 pour python-setuptools, donc au moins Jessie sur Debian.
- Sans python3, certains flux rss ne sont pas récupérés.
Pour que python3 soit utilisé par défaut, en root :
rm /usr/bin/python ln -s /usr/bin/python3 /usr/bin/python
Créer un dossier pour le bot, se mettre dedans
mkdir botfile cd botfile
Télécharger et dézipper limnoria
wget https://github.com/ProgVal/Limnoria/archive/master.zip unzip master.zip cd Limnoria-master/
Installer sans être root.
pip3 install -r requirements.txt --user python setup.py install --user
Ensuite, faire des raccourcis pour la suite
echo 'PATH="$HOME/.local/bin:$PATH"' >> ~/.$(echo $SHELL|cut -d/ -f3)rc source ~/.$(echo $SHELL|cut -d/ -f3)rc
Créez le dossier où sera stocké la configuration des bots, mettez-vous dedans et lancez l'assistant d'installation :
cd ../ mkdir config cd config supybot-wizard
Diverses questions vont être posées (en anglais), il suffit de suivre tranquillement.
Pour lancer le bot :
supybot bot.conf
En daemon :
supybot --daemon bot.conf
Lancer automatiquement les bots via cron
Créer un fichier pid du nom du bot dans le dossier config
:
touch bot.pid
Ajouter une ligne de ce genre dans cron (via crontab -e
) :
*/10 * * * * /home/user/.local/bin/supybot-botchk --supybot=/home/user/.local/bin/supybot --botdir=/home/user/supybot/config/ --pidfile=/home/user/supybot/config/bot.pid --conffile=/home/user/supybot/config/bot.conf
*/10
indique que la commande sera lancée toutes les 10 minutes.
Liens et ressources
- Doc en anglais, de limnoria : http://doc.supybot.aperio.fr/en/latest/use/
- Doc en français, peut-être moins à jour : https://fr.supybot.aperio.fr/
- Channel irc en français, sur freenode : #supybot-fr
La doc est assez complète sur ces différentes ressources, ainsi que les tutos pour la prise en main basique du bot.
Pense-bête
Ce qui suit est un résumé des principales commandes et actions ; mieux vaut lire la doc officielle auparavant.
Pour lister les commandes des plugins :
config list supybot.plugins.NomDuPlugin config list supybot.plugins.NomDuPlugin.Dossier1
Pour avoir des informations sur les options des plugins :
config help supybot.plugins.NomDuPlugin.Dossier1.option1
S'il y a un arobase (@) devant ce qui est listé par la première commande, il faut répéter list
avec le paramètre en arobase. Sinon, il faut utiliser help
.
<Zatalyz> config list supybot.plugins.RSS -pendorid- #announce, #announceFormat, #defaultNumberOfHeadlines, #format, #headlineSeparator, #initialAnnounceHeadlines, #keywordBlacklist, #keywordWhitelist, #notice, @feeds, public, sortFeedItems, and waitPeriod <Zatalyz> config list supybot.plugins.RSS.feeds -pendorid- @blog, @forum, @mediateki, @taf, @um1, and @wikhan <Zatalyz> config help supybot.plugins.RSS.announce -pendorid- Determines which RSS feeds should be announced in the channel; valid input is a list of strings (either registered RSS feeds or RSS feed URLs) separated by spaces. (Current value: )
Plugin en anglais
Il se peut que le bot parle en anglais, alors qu'on avait bien configuré le français en langue principale. Dans ce cas, s'assurer que c'est bien le français qui est la langue de base, puis décharger et recharger le plugin (via le chat, en causant direct au bot) :
config language fr unload Games load Games
Alias
La commande Alias permet de créer des commandes personnalisées pour le bot, ce qui est tout simplement génial.
Bien que les développeurs conseillent à présent d'utiliser le plugin Aka (mêmes fonctionnalités), mon expérience personnelle me fait préférer Alias, qui se contente de marcher…
Alias utiles :
Commande | Résultat |
---|---|
alias add !me do #canal $1 | Lorsqu'on écrira !me blabla au bot, il dira “bot blabla” sur le #canal. |
RSS
Ajouter les divers flux propres à Khaganat :
rss add forum https://khaganat.net/forum/index.php?action=.xml;type=rss rss add mediateki https://khaganat.net/mediateki/feed.php rss add taf https://khaganat.net/taf/feed.php rss add wikhan https://khaganat.net/wikhan/feed.php rss add um1 https://khaganat.net/um1/feed.php rss add blog https://khaganat.net/blog/index.php?feed/atom
rss add GitKhaganat https://git.khaganat.net/dashboard/projects.atom?private_token=nZ7ynPNx7QXdeeCwCEQZ
Enlever les divers flux
rss remove forum rss remove mediateki rss remove taf rss remove wikhan rss remove um1 rss remove blog rss remove GitKhaganat
Modifier le nombre de lignes à afficher lors des mises à jour des flux :
config supybot.plugins.rss.initialAnnounceHeadlines 1
Ajouter les annonces sur le canal lorsqu'il y a du nouveau :
rss announce add #khanat forum blog um1 taf mediateki wikhan rss announce add #krypte GitKhaganat
Lister les flux sur un canal :
rss announce list #khanat
S'identifier et faire des bêtises
Effet | Commande | Exemple de commande |
---|---|---|
S'enregistrer auprès d'un bot, afin de lui faire faire certaines commandes | user register <nom> <mot-de-passe> | user register Dupont branaz |
Changer le mot de passe | user set password <utilisateur> <ancien mot de passe> <nouveau mot de passe> | user set password Dupont branaz pendo |
S'identifier auprès du bot pour pouvoir utiliser plus de commandes | identify <pseudo> <mot-de-passe> | identify Dupont branaz |
Savoir si on est enregistré et qui on est | whoami | whoami |