Table des matières

Eggdrop

Eggdrop est un logiciel permettant d'utiliser un bot sur IRC. Nous utilisions Eggdrop pour pendorid, avant de passer au logiciel Limnoria.

Cet article détaille comment gérer un bot avec Eggdrop. Il est plus simple d'installer Eggdrop 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 !

Installer Eggdrop et les robots

Installer et compiler Eggdrop

Sous Debian, installer tcl8.5, tcllib et tcl-dev :

sudo apt-get update
sudo apt-get install tcl8.5 tcl8.5-dev tcllib tcl-dev

Télécharger la dernière version stable d'Eggdrop et la décompresser, (ne pas renommer, l'installation créera ensuite un dossier “eggdrop”) :

wget ftp://ftp.eggheads.org/pub/eggdrop/source/1.6/eggdrop1.6.21.tar.gz
tar zxvf eggdrop1.6.21.tar.gz
cd eggdrop1.6.21

Prérequis pour la compilation :

sudo apt-get install gcc make 

Prérequis pour le support SSL (flux rss) :

sudo apt-get install openssl libssl-dev tcl-tls

Compiler eggdrop :

./configure
make config
make
make install 

Se rendre dans le nouveau dossier eggdrop :

cd
rm -R eggdrop1.6.21
cd ../eggdrop

On peut alors supprimer les fichiers de compilation, ils ne sont plus nécessaires.

Ajouter des fonctionnalités via des scripts

Il y a deux scripts actuellement utilisés par eggdrop sur #khanat. Le premier permet à pendorid de rapporter un flux rss (nouvelles sur le forum, entre autre), le second de la faire parler. Ce dernier est un script maison. S'il vous intéresse, contactez un administrateur sur #khanat1).

Copier les fichiers utiles des scripts dans eggdrop/script.

RSS-synd

Le script RSS est celui qu'on trouve sur https://github.com/eggtcl/rss-synd où on trouve sa documentation complète. Il en existe plusieurs sur le web, assez similaires. Il faut créer et configurer un fichier pour stocker les databases des flux rss, par exemple eggdrop/script/feed, et indiquer le chemin de ce fichier dans la configuration du script, dans le fichier rss-synd-settings.tcl (ligne “database”).

Personnalisation des messages

Le script de base est très sérieux, et anglais. Nous l'avons personnalisé pour que pendorid soit plus “vivante”, en modifiant rss-synd.tcl

⇒ Pour changer le message quand on demande au bot la liste des flux :

Après

	if {[info exists list_feeds]} {
		if {[llength $list_feeds] == 0} {
			lappend list_feeds "None"
		}

Modifiez :

		lappend list_msgs "Available feeds: [join $list_feeds ", "]."

en :

		lappend list_msgs "attends que vous choississiez votre radio : [join $list_feeds ", "]."

⇒Pour que le bot parle sur le canal comme s'il avait fait un /me et pas juste en récitant son texte, après :

proc ::rss-synd::feed_msg {type msgs targets {nick ""}} {
	# check if our target is a nick
	if {(($nick != "") && \
	     ($targets == "")) || \
	    ([regexp -- {[23]} $type])} {
		set targets $nick
	}

Modifiez :

	foreach msg $msgs {
		foreach chan $targets {
			if {([catch {botonchan $chan}] == 0) || \
			    ([regexp -- {^[#&]} $chan] == 0)} {
				foreach line [split $msg "\n"] {
					if {($type == 1) || ($type == 3)} {
						putserv "NOTICE $chan :$line"
					} else {
						putserv "PRIVMSG $chan :$line"
					}
				}

En :

#modif : ajout de \001ACTION en début et fin pour faire un /me
	foreach msg $msgs {
		foreach chan $targets {
			if {([catch {botonchan $chan}] == 0) || \
			    ([regexp -- {^[#&]} $chan] == 0)} {
				foreach line [split $msg "\n"] {
					if {($type == 1) || ($type == 3)} {
						putserv "NOTICE $chan :pendorid $line"
					} else {
						putserv "PRIVMSG $chan :\001ACTION $line \001"
					}
				}

Notez que nous avons utilisé le mot “pendorid”… mettez le nom de votre bot !

https

Il est possible qu'il y ait un souci pour lire un flux https. Vérifiez que tous les paquets à l'étape “installer Eggdrop” sont bien présents. Si le problème perdure, cela peut être lié à la façon dont le serveur du bot est configuré (ports, etc). Dans ce cas, en lançant le bot avec la commande ./eggdrop -n bot.conf, on obtient une erreur de “time out”. Trouver un endroit où installer le bot qui soit plus accessible… Ou comprendre comment les ports s'ouvrent.

Au 19/04/2015 des problèmes sur la lecture du flux RSS sont réapparu (lié au certificat ?). Mais on peut aussi accéder aux flux en http, donc… c'est ceux-là qui sont renseignés dans le fichier de configuration.

Encodage

Si les flux ramenés sont mal encodés (accents bizarres), il faut ajouter cette ligne dans les options par défaut, dans le fichier rss-synd-settings.tcl :

"feedencoding"		"utf-8"

Cela indique quel est l'encodage du flux. On peut voir quel encodage est utilisé en allant sur le flux en question, en regardant le code source et ce qui est indiqué à la section <?xml. Par exemple pour l'utf-8:

<?xml version="1.0" encoding="UTF-8"?>

Configurer les bots

Chaque bot a plusieurs fichiers à son nom :

Le fichier .conf est le premier à bidouiller. Il contient les diverses infos de base. Copiez le fichier d'exemple eggdrop.conf en le renommant du nom de votre bot, par exemple pendorid.conf, puis prenez le temps de bien le lire et de comprendre chaque option et personnalisez-le.

En cas de doute sur les options, allez lire les infos sur les sites suivants : http://www.ircz.fr/guides.php?act=lire&cle=84 et http://wiki.eggdrop.fr/Installation_d%27un_eggdrop_1.8

Le fichier .botchk sera utilisé pour relancer le bot automatiquement en cas d'arrêt. Copiez le fichier par défaut et changez les informations nécessaires.

Les deux autres seront créés automatiquement, ainsi qu'un fichier pid.bot suivant ce que vous avez renseigné dans le bot.conf.

Pour le premier lancement, taper la commande :

./eggdrop -m BOT.conf

Cela permet de le configurer et créé automatiquement les autres fichiers. On peut par la suite lancer le robot manuellement avec la commande

./eggdrop BOT.conf

Sur les deux commandes précédentes, remplacez BOT par le nom du fichier.

Puis via IRC, dites bonjour à votre bot, en anglais.

/msg nikbot hello

Cela vous transforme en propriétaire du bot, et vous permet de créer un mot de passe (notez-le !) afin de le gérer via IRC. Cependant, pour utiliser les commandes via IRC, il faut aussi le permettre dans le fichier de conf.

Relancer le bot automatiquement

Ajoutez au crontab cette ligne pour relancer le bot en cas d'arrêt (en mettant le bon chemin et nom du bot) :

0,10,20,30,40,50 * * * * /home/user/eggdrop/BOT.botchk >/dev/null 2>&1
1)
Si vous connaissez la syntaxe tcl, Zatalyz vous demandera un peu d'aide à la relecture afin de le rendre public