Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| fr:errbot [2018/04/29 14:15] – [SayBot] Le pouvoir des mots est notre. zatalyz | fr:errbot [2021/12/03 18:19] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 2: | Ligne 2: | ||
| Errbot est un logiciel de bot multiplateforme, | Errbot est un logiciel de bot multiplateforme, | ||
| - | On peut utiliser des “bots” sur les canaux de discussions pour diverses utilisations. Nous avons sur nos canaux un bot qui 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 Errbot. | + | On peut utiliser des “bots” sur les canaux de discussions pour divers usages. Nous avons sur nos canaux un bot qui 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 |
| - | Cet article détaille comment gérer un bot avec Errbot. Il vaut mieux installer Errbot sur un serveur afin que le bot soit toujours | + | Cet article détaille comment gérer un bot avec Errbot. Il vaut mieux installer Errbot sur un serveur afin que le bot soit présent |
| + | <WRAP center round info 60%> | ||
| + | Errbot répondait difficilement à certains de nos besoins tout en consommant un peu trop de mémoire à notre goût pour le peu qu'il faisait, nous ne l' | ||
| + | </ | ||
| ===== Installation ===== | ===== Installation ===== | ||
| Ligne 11: | Ligne 14: | ||
| <WRAP center round info 100%> | <WRAP center round info 100%> | ||
| - | Sous Debian stable, python est encore par défaut à une vieiiiiiille version, alors que python3 est présent. | + | Sous Debian stable, python est encore par défaut à une vieiiiiiille version, alors que python3 est pourtant |
| Donc, changeons ça : | Donc, changeons ça : | ||
| rm / | rm / | ||
| ln -s / | ln -s / | ||
| - | <WRAP center round important 60%> | + | |
| Si vous avez des erreurs sur python lors d'une mise à jour du système, remettez le lien symbolique sur python2 le temps de faire la mise à jour. | Si vous avez des erreurs sur python lors d'une mise à jour du système, remettez le lien symbolique sur python2 le temps de faire la mise à jour. | ||
| + | |||
| + | Note : ce n'est pas bien de faire ça comme ça. Mais ça marche. | ||
| </ | </ | ||
| + | |||
| + | ==== Via Pipenv ==== | ||
| + | Pipenv est probablement la façon la plus propre de gérer les choses. L' | ||
| + | |||
| + | sudo apt install python3-pip python3-requests | ||
| Puis installez '' | Puis installez '' | ||
| Ligne 26: | Ligne 36: | ||
| Source : http:// | Source : http:// | ||
| - | Note : avec Debian, il faudra | + | Note : avec Debian, il faudra remplacer la simple commande '' |
| + | |||
| + | On créé un dossier où errbot sera installé et on installe ses dépendances : | ||
| + | |||
| + | < | ||
| + | mkdir -p " | ||
| + | cd " | ||
| + | python -m pip install sleekxmpp pyasn1 pyasn1-modules --user | ||
| + | python -m pipenv install errbot | ||
| + | </ | ||
| + | <WRAP center round tip 100%> | ||
| + | Si vous avez des erreurs à ce stade, lisez bien ce qui est indiqué. | ||
| + | |||
| + | Par exemple, sleekxmpp a un [[https:// | ||
| + | |||
| + | La commande pour installer ces dépendances dans une version antérieure devient donc | ||
| + | < | ||
| + | |||
| + | J'ai aussi eu droit à quelque chose qui se terminait de cette façon : | ||
| + | < | ||
| + | Could not find a version that matches pygments-markdown-lexer> | ||
| + | Tried: 0.1.0.dev39 | ||
| + | There are incompatible versions in the resolved dependencies. | ||
| + | </ | ||
| + | |||
| + | Résolu en faisant ce qui était écrit : | ||
| + | < | ||
| + | python -m pipenv graph</ | ||
| </ | </ | ||
| + | On peut enfin initialiser le premier lancement du bot : | ||
| < | < | ||
| - | mkdir -p " | + | python |
| - | cd " | + | |
| - | pipenv install errbot | + | |
| - | pipenv run errbot --init | + | |
| </ | </ | ||
| - | Alternative sans pipenv | + | ==== Alternative sans pipenv |
| < | < | ||
| virtualenv --python $(which python3) ~/ | virtualenv --python $(which python3) ~/ | ||
| Ligne 53: | Ligne 89: | ||
| pip install sleekxmpp pyasn1 pyasn1-modules | pip install sleekxmpp pyasn1 pyasn1-modules | ||
| - | <WRAP center round tip 60%> | + | |
| - | Actuellement, | + | |
| - | pip install sleekxmpp==1.3.1 pyasn1==0.3.7 pyasn1-modules==0.1.4 | + | |
| - | </ | + | |
| Ligne 69: | Ligne 102: | ||
| ==== Config.py ==== | ==== Config.py ==== | ||
| - | Le fichier | + | Le fichier ~/ |
| Voici ce qu'il contient chez nous (à un mot de passe près) : | Voici ce qu'il contient chez nous (à un mot de passe près) : | ||
| Ligne 81: | Ligne 114: | ||
| #Config de base | #Config de base | ||
| - | BOT_DATA_DIR = r'/ | + | BOT_DATA_DIR = '/ |
| - | BOT_EXTRA_PLUGIN_DIR = r'/ | + | BOT_EXTRA_PLUGIN_DIR = '/ |
| - | BOT_LOG_FILE = r'/ | + | BOT_LOG_FILE = '/ |
| BOT_LOG_LEVEL = logging.INFO | BOT_LOG_LEVEL = logging.INFO | ||
| Ligne 90: | Ligne 123: | ||
| XMPP_USE_IPV6 = True | XMPP_USE_IPV6 = True | ||
| - | # Liste des admins | + | # Liste des admins |
| - | BOT_ADMINS = ('zatalyz@movim.eu', ) | + | BOT_ADMINS = ('moi@xmppserver.com', ) |
| #Install auto des dépendances des plugins | #Install auto des dépendances des plugins | ||
| Ligne 101: | Ligne 134: | ||
| BOT_IDENTITY = { | BOT_IDENTITY = { | ||
| # XMPP | # XMPP | ||
| - | ' | + | ' |
| ' | ' | ||
| } | } | ||
| - | CHATROOM_PRESENCE = ('khanat@chat.khaganat.net',' | + | CHATROOM_PRESENCE = ('salon1@chat.xmppserver.com',' |
| # " | # " | ||
| Ligne 121: | Ligne 154: | ||
| ACCESS_CONTROLS = { | ACCESS_CONTROLS = { | ||
| ' | ' | ||
| - | ' | + | ' |
| - | ' | + | ' |
| }, | }, | ||
| } | } | ||
| Ligne 132: | Ligne 165: | ||
| La partie des contrôles d' | La partie des contrôles d' | ||
| - | Par défault, tout le monde a les accès : | + | Par défaut, tout le monde a les accès : |
| ACCESS_CONTROLS_DEFAULT = {} | ACCESS_CONTROLS_DEFAULT = {} | ||
| Ligne 139: | Ligne 172: | ||
| On va ensuite définir des utilisateurs, | On va ensuite définir des utilisateurs, | ||
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| - | <code python> | + | <code python> |
| ACCESS_CONTROLS = {' | ACCESS_CONTROLS = {' | ||
| ' | ' | ||
| ' | ' | ||
| - | ' | ||
| ' | ' | ||
| ' | ' | ||
| Ligne 173: | Ligne 205: | ||
| <WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
| C'est probablement presque la bonne façon de faire, sauf que ça ne marche pas pour moi avec pipenv... | C'est probablement presque la bonne façon de faire, sauf que ça ne marche pas pour moi avec pipenv... | ||
| - | --- //[[wiki:user: | + | --- // |
| </ | </ | ||
| Ligne 232: | Ligne 264: | ||
| Renseigner son identifiant jabber dans config.py | Renseigner son identifiant jabber dans config.py | ||
| - | BOT_ADMINS = (' | + | BOT_ADMINS = (' |
| Puis ajouter le bot à ses contacts, et initier la conversation depuis les contacts, pas depuis le salon, sinon il croit qu'on est le salon ! Pour vérifier comment il nous voit, il suffit de lui envoyer la commande " | Puis ajouter le bot à ses contacts, et initier la conversation depuis les contacts, pas depuis le salon, sinon il croit qu'on est le salon ! Pour vérifier comment il nous voit, il suffit de lui envoyer la commande " | ||
| Ligne 242: | Ligne 274: | ||
| Pour vérifier s'il sait qui on est : | Pour vérifier s'il sait qui on est : | ||
| !whoami | !whoami | ||
| + | |||
| + | Pour voir les dernières infos du log du bot (pas le log des canaux hein, mais ce qui est passé en info au bot) | ||
| + | !log tail | ||
| + | |||
| + | Par défaut c'est assez long, on peut mettre un chiffre en paramètre pour limiter le nombre de lignes : | ||
| + | !log tail 10 | ||
| ===== Pages ===== | ===== Pages ===== | ||
| La doc d' | La doc d' | ||
| Ligne 268: | Ligne 306: | ||
| < | < | ||
| ' | ' | ||
| - | ' | + | ' |
| }, | }, | ||
| }</ | }</ | ||
| Ligne 278: | Ligne 316: | ||
| Par exemple : | Par exemple : | ||
| - | !say krypte@chat.khaganat.net:hello | + | !say salon1@chat.xmppserver.com:hello |
| - | !say krypte@chat.khaganat.net:/me n'aime pas causer | + | !say salon2@chat.xmppserver.com:/me n'aime pas causer |
| Moralité, va falloir un plugin d' | Moralité, va falloir un plugin d' | ||
| - | Autre point de détail : par défaut le plugin est configuré pour que seuls les administratrices puissent utiliser " | + | Autre point de détail : par défaut le plugin est configuré pour que seules |
| Il faut modifier le fichier du plugin, dans votre dossier d' | Il faut modifier le fichier du plugin, dans votre dossier d' | ||
| Ligne 291: | Ligne 329: | ||
| < | < | ||
| ' | ' | ||
| - | ' | + | ' |
| - | ' | + | ' |
| }, | }, | ||
| }</ | }</ | ||
| Ligne 307: | Ligne 345: | ||
| Alias à créer | Alias à créer | ||
| - | !alias add y say krypte@chat.khaganat.net: | + | !alias add y say salon1@chat.xmppserver.com: |
| - | !alias add s say khanat@chat.khaganat.net: | + | !alias add s say salon2@chat.xmppserver.com: |
| Appel | Appel | ||
| !y message | !y message | ||
| Ligne 336: | Ligne 374: | ||
| !rssreader add addresse_du_flux | !rssreader add addresse_du_flux | ||
| - | Cela va associer une ID au flux (feeds). | + | Cela va associer une ID au flux (feed). |
| Ligne 353: | Ligne 391: | ||
| - | < | + | < |
| Pour voir les abonnements de chaque canaux aux flux : | Pour voir les abonnements de chaque canaux aux flux : | ||
| !rssreader subscriptions | !rssreader subscriptions | ||
| - | ===== Logguer | + | ===== Loguer |
| - | Linkmauve nous a créé de quoi loguer les canaux. Téléchargez le fichier [[https:// | + | Linkmauve nous a créé de quoi loguer les canaux, |
| - | + | ||
| - | Il faut installer le module slixmpp. On en profite aussi pour faire un dossier où seront les logs et le fichier du bot. | + | |
| - | + | ||
| - | mkdir xmpplog | + | |
| - | cd xmpplog | + | |
| - | python -m pipenv install slixmpp | + | |
| - | + | ||
| - | Mettez " | + | |
| - | + | ||
| - | Sans pipenv, le script prends les arguments de cette façon : | + | |
| - | ./log.py -j nom@server.com -p " | + | |
| - | + | ||
| - | Avec les options suivantes : | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | Avec pipenv, la commande est | + | |
| - | python -m pipenv run python ./log.py -j nom@server.com -p " | + | |
| - | + | ||
| - | Oui c'est un peu long... | + | |
| - | + | ||
| - | Si ça marche, on créé un service systemd dans ''/ | + | |
| - | + | ||
| - | < | + | |
| - | [Unit] | + | |
| - | Description=Chat bot XMPP log | + | |
| - | After=network.target network-online.target | + | |
| - | + | ||
| - | [Service] | + | |
| - | Type=simple | + | |
| - | User=khaganat | + | |
| - | Group=khaganat | + | |
| - | WorkingDirectory=/ | + | |
| - | ExecStart=python -m pipenv run python ./ | + | |
| - | Restart=always | + | |
| - | KillSignal=SIGINT | + | |
| - | + | ||
| - | [Install] | + | |
| - | WantedBy=multi-user.target | + | |
| - | </ | + | |
| - | + | ||
| {{tag> Tutoriel Bot Serveur IRC XMPP}} | {{tag> Tutoriel Bot Serveur IRC XMPP}} | ||





