4.2 KiB
matter_bot
Au début, matter_bot
devait être un bot qui fait le pont entre Discord et Mattermost.
Malheureusement, je n'ai pas réussi a recevoir les messages depuis Mattermost...
MAIS, tout ce qui est du côté de Discord devrait fonctionné proprement.
J'ai laissé tout ce que j'ai commencé pour Mattermost, il faut donc quand-même renseigner les variables demandés ci-dessous pour pouvoir lancer le bot.
Pré-requis
openssl
requis par mattermost_api
sudo apt install libssl-dev
.env
placé dans la racine du projet qui contient ses différentes variables :
TOKEN_MATTERMOST=votre_token_ici # pas besoin de token si vous mettez un combo pseudo/mot-de-passe
PSEUDO=votre_pseudo_ici # pas besoin de pseudo si un token est renseigné
MOT_DE_PASSE=votre_mot-de-passe_ici # pas besoin de mot de passe si un token est renseigné
URL=url_du_site_ici # ex: https://talk.up8.edu
EQUIPE=nom_de_lequipe # ex: etudiant-es
SALON=nom_du_salon # ex: off-topic
TOKEN_DISCORD=votre_token_ici # token discord
PREFIX=votre_prefix_ici # commun aux deux bots, par défaut: ç
Note: Si les deux moyens de connexion pour Mattermost sont renseignés (token et pseudo/mot-de-passe), le bot ne se lancera pas.
Mattermost
Dans le cas ou vous optez pour le token, vous devez ajouter un bot, pour ce faire (d'après la documentation officielle) :
- Cliquez sur les 9 carrés en haut a gauche
- Integrations
- Bot Accounts
- Add Bot Account
- Remplissez les champs
- Cochez la case
post:all
pour être sur qu'il n'y aura pas de problèmes de permission (facultatif) - Create Bot Account
- Dans la page suivante, vous aurez votre token d'accès
Discord
Tests en local
En local, j'ai utilisé Docker pour héberger mon instance de Mattermost et pouvoir faire des tests, voici le docker-compose que j'ai utilisé :
version: "2"
services:
mattermost:
image: mattermost/mattermost-preview:latest # version preview parce que c'est juste pour testé
container_name: Mattermost
ports:
- 8065:8065 # cf. documentation officielle : https://docs.mattermost.com/install/setting-up-local-machine-using-docker.html
restart: unless-stopped
Sources
- Documentation
mattermost_api
(utilisé pour communiquer avec Mattermost) serde
(utilisé pour ma structure de salon [j'ai fait commemattermost_api
])serde_json
(utilisé pour gérer tout ce qui estjson
)tokio
(utilisé carmattermost_api
estasync
)- Documentation
chrono
(utilisé pour l'analyse des timestamps) - Documentation
serenity
(utilisé pour communiquer avec Discord) - Je me suis aidé de mes réponses aux rustlings pour me rafraîchir la mémoire sur certains points
- Documentation de l'
API Mattermost
(évidemment pour savoir comment Mattermost fonctionne)
Estimation du temps de build
Sur ma machine (WSL), le temps de build d'environ une minute.
time cargo build
:
________________________________________________________
Executed in 62.99 secs fish external
usr time 245.30 secs 299.00 micros 245.30 secs
sys time 22.10 secs 149.00 micros 22.10 secs
Résumé
Beaucoup de blabla, au final, qu'est ce qui fonctionne ?
- Pont Discord -> Mattermost
- Pont Mattermost -> Discord
- Commandes Discord
- Commandes Mattermost
Cependant, je pense avoir fait 50% du travail pour le pont Mattermost, il manque, je pense, une implémentation du websocket de la part
du repsonsable de mattermost_api
. J'ai essayer de le faire moi-même mais pas réussi.
Projet ne fonctionne pas avec l'instance de la Fac, car son Mattermost se connecte via Gitlab et (je crois?) aucune librairie ne supporte ceci en Rust.