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_commandspour 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
pytzpour gérer le fuseau horaire de Paris et éviter les décalages d'heures.
Stack Technique
-
Python : Langage principal
-
Discord.py : API Wrapper
-
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
/ajouter date:20/12/2025 description:Projet Python
✅ Devoir ajouté pour le 20/12/2025 : Projet Python
🚨 Urgent : 'Projet Python' pour DEMAIN !
Simulation des interactions et des rappels automatiques.