From 1910c31910dc9e2820898733b01c2206a134d009 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 20 Apr 2025 22:15:01 +0200 Subject: [PATCH] Final fixes --- bot.py | 41 +++++++++++++++++++++++++++++++++++++++++ family.py | 13 +++++++++++++ 2 files changed, 54 insertions(+) diff --git a/bot.py b/bot.py index ca99b59..6187362 100644 --- a/bot.py +++ b/bot.py @@ -275,6 +275,47 @@ async def enfants(interaction: discord.Interaction): ephemeral=True ) +@bot.tree.command(name="separer", description="Mettre fin à une relation") +async def separer(interaction: discord.Interaction, partenaire: discord.Member): + membre = interaction.user + + # Validation + if membre.id == partenaire.id: + await interaction.response.send_message( + "❌ Impossible de se séparer de soi-même !", + ephemeral=True + ) + return + + # Vérifie que le couple existe + if not family.get_partner(str(membre.id)) == str(partenaire.id): + await interaction.response.send_message( + "❌ Vous n'êtes pas en couple avec cette personne", + ephemeral=True + ) + return + + # Exécute la séparation + if family.remove_couple(str(membre.id), str(partenaire.id)): + # Message avec mention des enfants s'il y en a + enfants = family.get_children(str(membre.id)) + family.get_children(str(partenaire.id)) + + if enfants: + enfants_mentions = ' '.join([f"<@{e}>" for e in enfants]) + message = ( + f"💔 {membre.mention} et {partenaire.mention} ont rompu.\n" + f"👶 Enfant(s) concerné(s) : {enfants_mentions}" + ) + else: + message = f"💔 {membre.mention} et {partenaire.mention} ont rompu." + + await interaction.response.send_message(message) + else: + await interaction.response.send_message( + "❌ Erreur lors de la séparation", + ephemeral=True + ) + @bot.command() @commands.has_permissions(administrator=True) async def init(ctx): diff --git a/family.py b/family.py index d644844..4d3390d 100644 --- a/family.py +++ b/family.py @@ -200,3 +200,16 @@ class FamilyManager: """Liste toutes les racines""" data = self._load() return data.get("roots", []) + def remove_couple(self, member1_id: str, member2_id: str) -> bool: + """ + Supprime un lien de couple entre deux membres + :return: True si suppression effectuée, False si couple introuvable + """ + data = self._load() + couple = sorted([str(member1_id), str(member2_id)]) + + if couple in data["couples"]: + data["couples"].remove(couple) + self._save(data) + return True + return False