Bot Discord Scolaire

Automatisation Python & Gestion de tâches asynchrones

Voir les autres projets

Le Contexte

Pour faciliter l'organisation de ma classe, j'ai développé un bot Discord collaboratif surnommé "Michel". Le problème initial était simple : les informations sur les devoirs étaient dispersées et souvent oubliées.

Ce projet m'a permis de travailler sur l'hébergement continu (24/7) via Discloud et d'approfondir ma gestion des dates et des tâches planifiées (Background Tasks) en Python. Le bot permet à n'importe quel élève d'ajouter un devoir et notifie automatiquement la classe à l'approche de l'échéance.

Fonctionnalités Développées

  • Système de Rappels Auto : Une boucle asynchrone (tasks.loop) vérifie chaque heure si un devoir arrive à échéance (J-7 et J-1) et envoie une alerte.
  • Commandes Slash : Utilisation de app_commands pour une interface moderne (/ajouter, /devoir, /supprimer).
  • Persistance JSON : Sauvegarde locale des devoirs pour éviter la perte de données en cas de redémarrage du bot.
  • Gestion Temporelle : Utilisation de la librairie pytz pour gérer le fuseau horaire de Paris et éviter les décalages d'heures.

Stack Technique

  • Python Python : Langage principal
  • Discord.py Discord.py : API Wrapper
  • JSON JSON : Base de données fichier
  • Discloud : Hébergement VPS

Les Défis Techniques

Boucles Asynchrones : J'ai dû implémenter @tasks.loop(hours=1) pour créer un processus d'arrière-plan qui surveille les dates sans bloquer les commandes du bot. C'était essentiel pour que le bot reste réactif tout en faisant ses vérifications.

Synchronisation des Commandes : Le passage aux "Slash Commands" nécessite une étape de synchronisation avec l'API de Discord (bot.tree.sync). J'ai mis en place un script de démarrage qui synchronise automatiquement les commandes avec le serveur de la classe au lancement.

Parsing de Dates : Gérer les entrées utilisateurs est complexe. J'ai utilisé datetime.strptime pour convertir les chaînes de caractères (ex: "20/12/2025") en objets dates manipulables pour les calculs de délais.

Aperçu Discord

Louka Hier à 14:30

/ajouter date:20/12/2025 description:Projet Python

Michel BOT Hier à 14:30

✅ Devoir ajouté pour le 20/12/2025 : Projet Python

Michel BOT Aujourd'hui à 09:00

🚨 Urgent : 'Projet Python' pour DEMAIN !

Simulation des interactions et des rappels automatiques.