====== Eggdrop ======
Eggdrop est un logiciel permettant d'utiliser un bot sur [[fr:irc|IRC]]. Nous utilisions Eggdrop pour pendorid, avant de passer au logiciel [[fr:limnoria]].
Cet article détaille comment gérer un bot avec [[http://www.eggheads.org/|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.
Documentation complémentaire sur http://www.ircz.fr/guides.php?act=lire&cle=84 et http://wiki.eggdrop.fr/Installation_d%27un_eggdrop_1.8
==== 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 #khanat((Si vous connaissez la syntaxe tcl, Zatalyz vous demandera un peu d'aide à la relecture afin de le rendre public)).
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 ''
==== Configurer les bots ====
Chaque bot a plusieurs fichiers à son nom :
* ''*.conf''
* ''*.botchk''
* ''*.chan''
* ''*.user''
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 [[http://wiki.eggdrop.fr/Party_line|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 [[http://doc.ubuntu-fr.org/cron|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
{{tag> Tutoriel Bot Serveur IRC }}