Various fixes on tree and removing a member

This commit is contained in:
root
2025-04-20 09:14:18 +02:00
parent 427bd4572b
commit dea03d7eb2
7 changed files with 91 additions and 82 deletions

47
bot.py
View File

@ -173,35 +173,32 @@ async def couple(interaction: discord.Interaction, partenaire: discord.Member):
ephemeral=True
)
@bot.tree.command(name="renier", description="Renier un enfant")
@bot.tree.command(name="renier", description="Renier et supprimer un enfant")
async def renier(interaction: discord.Interaction, enfant: discord.Member):
parent = interaction.user
success = family.remove_child(str(parent.id), str(enfant.id))
if success:
# Retire le rôle
generation = family.get_generation(str(enfant.id))
role_id = config["ROLE_IDS"].get(
"ENFANT" if generation == 1 else
"PETIT_ENFANT" if generation == 2 else
"ARRIERE_PETIT_ENFANT"
)
if role_id:
role = interaction.guild.get_role(role_id)
if role:
try:
await enfant.remove_roles(role)
except discord.Forbidden:
pass # On continue même si échec du retrait de rôle
await interaction.response.send_message(
f"{parent.mention} a renié {enfant.mention} !"
)
# Supprime d'abord le lien parental
family.remove_child(str(parent.id), str(enfant.id))
# Vérifie si l'enfant n'a plus aucun parent
parents_restants = family.get_parents(str(enfant.id))
if not parents_restants:
# Suppression complète
if family.remove_member(str(enfant.id)):
await interaction.response.send_message(
f"{parent.mention} a renié et supprimé {enfant.mention} de la famille !"
)
else:
await interaction.response.send_message(
"❌ Erreur lors de la suppression",
ephemeral=True
)
else:
# Cas où l'enfant a d'autres parents
await interaction.response.send_message(
"❌ Aucun lien parental trouvé.",
ephemeral=True
f"⚠️ {enfant.mention} a encore des parents ({len(parents_restants)}). "
f"Seul le lien avec {parent.mention} a été rompu."
)
@bot.tree.command(name="arbre", description="Afficher l'arbre généalogique")