Skip to content

INSAlgo/maurice

Repository files navigation

Maurice, le bot Discord d'INSAlgo, écrit par Maxence Younsi

Maurice

Challenge, Compétition, Algorithmie

C'est quoi cette bestiole

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.

Commandes du bot

Commandes ne nécéssitant pas d'autorisation

  • !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

Commandes nécessitant le rôle admin-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 !)

Configuration

TODO

Comment ça marche ?

  • 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

Déploiement du bot

(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