Bot Discord utile aux alternants de l'Université de Lorraine.
Doit permettre un accès facile et rapide à des outils de collaboration et aux informations qui concernent la promotion.
- Zachary Arnaise : Responsable CI/CD & tests
- Alexis Beer : Responsable développements & qualité
- Kevin Junck : Analyste fonctionnel
- Arnaud Pythoud : Responsable infrastructures & exploitation
- Loïc Steinmetz : Chef de projet, analyste technique
- Documentation (Notion)
- Gestion de projet (Trello)
- Repo interface web (Github)
- Gestion de l'emploi du temps : récupération et diffusion de l'emploi du temps de la promotion
- Gestion des travaux : système d'enregistrement et de rappel des travaux à faire
- Interface d'initialisation : interface web permettant d'initialiser le bot sur un serveur Discord.
Packages :
Séquence type :
1. Cloner le repository
2. Configurer une base de données
Nécessite une base de données PostgresSQL :
- Installer un serveur PostgresSQL local (https://www.postgresql.org/download/) ou utiliser un service de management en ligne (exemple : https://www.elephantsql.com/).
- Configurer l'accès de l'application à la base de données :
- Créer un fichier
ENVIRONMENT.properties
dans le dossierresources/utils
. - Renseigner les paramètres
DB_URL
,DB_USER
etDB_PASSWORD
avec les identifiants de connexion.
- Créer un fichier
3. Lancer les opérations de migration et de seed
Migration :
Exécuter le programme de migration via la classe programs.MigrationsLauncher
en ajoutant l'argument -migrate
.
→ Les scripts de migration doivent avoir été exécutés.
Réinitialisation de la base :
Exécuter le programme de migration via la classe programs.MigrationsLauncher
en ajoutant l'argument -clean
.
→ La base de données doit normalement être réinitialisée.
Seed :
- Exécuter à nouveau l'opération de migration.
- Exécuter le programme de seed via la classe
programs.SeedLauncher
.
→ Les tables de la base de données doivent contenir des données.
4. Configurer un bot discord de développement
- Accéder à l'espace Discord Developers : https://discord.com/developers/ (connexion nécessaire avec un compte Discord).
- Dans l'onglet "Applications", créer une nouvelle application.
- Ajouter un bot via l'onglet "Bot" de l'application créée.
- Dans le fichier
ENVIRONMENT.properties
, renseigner le paramètreBOT_TOKEN
avec le token du bot créé.
5. Ajouter le bot à un serveur Discord de test
- Créer un serveur Discord de test.
- Récupérer le
CLIENT_ID
du bot via le portail développeur Discord → App. - Générer un lien avec les permissions nécessaires (à défaut, toutes les permissions) via le site suivant : https://discordapi.com/permissions.html.
- Ajouter le bot au serveur de test via le lien généré.
6. Compléter la configuration
Logs :
Le niveau des logs peut être configuré en ajoutant un paramètre LOG_LEVEL
au fichier ENVIRONMENT.properties
. Les valeurs possible, dans l'ordre croissant d'affichage des détails sont :
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
Le niveau des logs est configuré par défaut sur INFO
.
Prise en compte du serveur de test :
Dans le fichier ENVIRONMENT.properties
, renseigner les paramètres :
SERVER_TEST
: Identifiant du serveur de test, à récupérer dansparamètres du serveur > widget > identifiant du serveur
.SCHEDULE_URL
: Url de l'emploi du temps.CHANNEL_TEST
: Channel dans lequel les informations seront publiées.
Exemple de fichier de configuration :
LOG_LEVEL=debug
DB_URL=jdbc:postgresql://localhost/alternbot
DB_USER=user
DB_PASSWORD=pwd
BOT_TOKEN=azertyuiopqsdfghjklmwxcvbn
SERVER_TEST=123456789
SCHEDULE_URL=https://dptinfo.iutmetz.univ-lorraine.fr/lna/agendas/ical.php?ical=azerty
CHANNEL_TEST=général
7. Lancer l'application : via la classe app.Launcher
.
Les développements sont réalisés via pull requests. Ils doivent être validés par au moins 1 autre développeur, dont le chef de projet, et ne doivent pas provoquer d'erreur lors de l'exécution des tests automatiques.
Les différentes versions sont déployées via Heroku. Idem pour l'interface web.
Infrastructure
- Hibernate : structuration et manipulation des modèles.
- JUnit 5 : tests
- JDA : opérations via API Discord
- JDA utilities - command : gestion spécifique des commandes Discord