Maurice, le bot Discord d'INSAlgo, écrit par Maxence Younsi
Challenge, Compétition, Algorithmie
Pour stimuler et faire vivre l'association après les crises majeures de 2020, notre génial bureau a pensé à créer un robot Discord offrant un nouveau moyen en temps réel de se mesurer aux autres, et d'aller toujours plus loin pour progresser dans la discipline.
!ping
Pour savoir si le bot est en marche!dep [département]
Pour avoir des infos fiables et vérifées sur un département insalien (9 dispos, nique le FIMI)!registerme <pseudo_Hackerrank
S'inscrire dans le scoreboard!help
Afficher l'aide du bot
!register @<utilisateur_discord> <pseudo_Hackerrank>
Inscrire un utilisateur dans le scoreboard INSAlgo!mult <slug-challenge> <multiplicateur>
Changer le multiplicateur de points d'un challenge!multcat <categorie> <multiplicateur>
Changer les multiplicateurs de points des challenges d'une catégorie :!refreshlb
Forcer le rafraichissement automatique du scoreboard à s'effectuer (cooldown=10s)!shutup @<user_discord
Effacer les derniers messages d'une personne (censure !)
TODO
- On remplit les fichiers de config, puis on fait
node server.js
- L'appli se connecte à notre base de données
- Un client discord.js se crée et se connecte à l'API Discord
- Un serveur web est aussi créé. Il servira de web API au bot pour communiquer avec Hackerrank
- Le client Discord réagit aux commandes faites dans les 3 channels donnés dans la config et parle à l'API qui va s'occuper de :
- communiquer avec Hackerrank
- recalculer les scores périodiquement (période configurable : dans
web_api_config.json
) et mettre à jour la db - executer les requêtes effectuées par Maurice et lui renvoyer les résultats
- d'autres choses (voir les différents endpoints)
- Le serveur web réagit aux requêtes faites sur les endpoints prévus puis répond
- Périodiquement, l'API recalcule les points des utilisateurs et Maurice met à jour les messages contenant les scoreboard sur discord
(Une fois docker installé)
git clone https://github.com/INSAlgo/maurice
cd maurice
nano config/maurice_config.json # Mettre le token Discord
docker-compose up -d --build
docker exec -i maurice-db psql -U maurice < sql/make_schema.sql # Charger le schéma postgres
docker-compose down # Relance du serveur
docker-compose up -d
Pour arrêter le serveur : docker-compose down
Conseil pour le dev : utiliser nodemon en décommentant la ligne dans le Dockerfile pour avoir accès au live-reload