I311 — Bot Discord
2026-10-05
Ce document présente un sujet de TP fil‑rouge et projet de semestre pour réviser et approfondir les notions essentielles de Java modernes (POO avancée, persistance, tests), les bonnes pratiques d’ingénierie logicielle (Git, CI, qualité) ainsi que la containerisation avec Docker. Le thème concret est la conception d’un bot et d’une API de gestion d’utilisateurs et de groupes inspirée d’un serveur Discord : ce contexte fournit des cas d’usage réalistes (événements, permissions, synchronisation d’état) tout en restant accessible.
Ce projet ne s’arrête pas à cette révision : il constituera le socle évolutif sur lequel nous viendrons greffer les nouvelles notions de microservices et d’architecture distribuée au fil des cours de M2.
L’objectif de ce TP est de réviser les concepts de base du langage Java que vous devez maîtriser en partant du projet starter : https://github.com/ebpro/starter-quarkus-rest. Il permettra aussi une révision de la mise en pratique de Git et de Maven.
Travail attendu
ci.sh ou un docker-compose pour lancer les vérifications (build, tests, lint).Le sujet propose Quarkus pour sa simplicité d’intégration cloud-native (dev mode rapide, build natif optionnel). Si vous préférez Spring Boot, c’est acceptable mais vous devez l’indiquer dans le README et garder les mêmes contrats API et tests.
Le thème du projet est l’intégration avec Discord, une plateforme de communication populaire. Vous allez modéliser les entités principales de Discord, telles que les utilisateurs, les groupes, les rôles et les canaux.
Premières étapes recommandées
User, Guild (serveur), Role, Channel. Pour chacun, identifiez un petit jeu d’attributs (ex : User(id, username, displayName, joinedAt)).Livrables liés à la dockerisation
Dockerfile multi‑étages pour l’application Java.docker-compose.yml fournissant au moins : l’application, une base PostgreSQL (ou H2 pour tests) et, optionnellement, un service Redis (ou une autre base NoSQL) si utilisé.mvn package && docker build -t mon-bot . et docker-compose up --build.Contrats API (exigences minimales)
User, Guild, Role, Channel suivant des conventions REST (ex : GET /api/users, POST /api/users).En vous appuyant sur la puissante bibliothèque Discord4J https://discord4j.com/, vous allez créer un bot Discord personnalisé capable d’interagir de manière dynamique avec votre serveur.
/sayhello ou un handler d’événement MemberJoin qui enregistre l’utilisateur en base (mode offline possible avec des tokens de test)..env exemple.Vous pourrez, si le temps le permet, proposer des modules additionnels (plugins) et des intégrations LLM.
Exemples d’extensions :
/teach – explique un concept technique demandé./translate – traduit un texte./summarize – résume un thread ou un texte donné./qa – recherche une réponse dans un index local (RAG) et la renvoie.E. Bruno - Révision de Java, Docker et Git