From a1bbb05ee2ed0e6e6a563c7996bbb31a9b063f71 Mon Sep 17 00:00:00 2001 From: Mathis Date: Sat, 16 May 2026 18:31:49 +0200 Subject: [PATCH] =?UTF-8?q?Corection=20urgente=20du=20syst=C3=A8me=20d'abs?= =?UTF-8?q?ence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commandes/absence_staff.py | 17 +++++++++++------ data/absences.json | 12 +++++++++++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/commandes/absence_staff.py b/commandes/absence_staff.py index 689cc1e..18c924c 100755 --- a/commandes/absence_staff.py +++ b/commandes/absence_staff.py @@ -75,8 +75,10 @@ def get_paris_now(): """Récupère l'heure actuelle à Paris""" return datetime.now(PARIS_TZ) -def parse_date(date_str: str): +def parse_date(date_str: Optional[str]): """Parse une date au format JJ/MM/AAAA HH:MM en timezone Paris""" + if not date_str: + raise ValueError("Date vide") return datetime.strptime(date_str, DATE_FORMAT).replace(tzinfo=PARIS_TZ) # --- MODALS & VIEWS --- @@ -108,12 +110,15 @@ class AbsenceModal(disnake.ui.Modal): required=True ) - async def callback(self, interaction: disnake.Interaction): + async def callback(self, interaction: disnake.ModalInteraction): try: - debut = parse_date(self.date_debut.value) - fin = parse_date(self.date_fin.value) - except ValueError: - return await interaction.response.send_message(f"❌ Format de date invalide. Utilise le format: `{DATE_FORMAT.replace('%d', 'JJ').replace('%m', 'MM').replace('%Y', 'AAAA').replace('%H', 'HH').replace('%M', 'MM')}`", ephemeral=True) + val_debut = interaction.text_values.get(self.date_debut.custom_id) or self.date_debut.value + val_fin = interaction.text_values.get(self.date_fin.custom_id) or self.date_fin.value + + debut = parse_date(val_debut) + fin = parse_date(val_fin) + except (ValueError, TypeError) as e: + return await interaction.response.send_message(f"❌ Format de date invalide ou manquant. Utilise le format: `{DATE_FORMAT.replace('%d', 'JJ').replace('%m', 'MM').replace('%Y', 'AAAA').replace('%H', 'HH').replace('%M', 'MM')}`", ephemeral=True) if debut > fin: return await interaction.response.send_message("❌ La date de début doit précéder la date de fin.", ephemeral=True) diff --git a/data/absences.json b/data/absences.json index 8550aa8..38d18ec 100644 --- a/data/absences.json +++ b/data/absences.json @@ -1,3 +1,13 @@ { - "1369669999345537145": {} + "1369669999345537145": { + "971446412690722826": { + "pseudo": "gameurpro12", + "debut": null, + "fin": null, + "motif": null, + "superieur": "<@353942721997832195>", + "message_id": 1505246281935618138, + "etat": "à venir" + } + } } \ No newline at end of file