Final beta for tonight

This commit is contained in:
root
2025-04-20 01:22:48 +02:00
parent 8c1e86cb53
commit 1474de77c4
11 changed files with 105 additions and 30 deletions

34
bot.py
View File

@ -74,14 +74,20 @@ async def enregistrer(interaction: discord.Interaction):
async def adopter(interaction: discord.Interaction, enfant: discord.Member):
parent = interaction.user
# Debug
parent_gen = family.get_generation(str(parent.id))
enfant_gen = family.get_generation(str(enfant.id))
print(f"Adoption: {parent.display_name} (gen {parent_gen}) → {enfant.display_name} (gen {enfant_gen})")
# Validations
if parent.id == enfant.id:
await interaction.response.send_message("❌ Auto-adoption impossible !", ephemeral=True)
return
if family.get_generation(str(enfant.id)) < family.get_generation(str(parent.id)):
# Nouvelle condition plus permissive
if enfant_gen > parent_gen:
await interaction.response.send_message(
"Structure familiale invalide !",
"Impossible d'adopter quelqu'un de plus ancien que vous !",
ephemeral=True
)
return
@ -111,14 +117,14 @@ async def adopter(interaction: discord.Interaction, enfant: discord.Member):
try:
await enfant.add_roles(role)
message = f"{parent.mention} a adopté {enfant.mention} !"
# Mentionne le partenaire si existe
partner_id = family.get_partner(str(parent.id))
if partner_id:
partner = interaction.guild.get_member(int(partner_id))
if partner:
message += f"\n👫 Partenaire : {partner.mention}"
await interaction.response.send_message(message)
except discord.Forbidden:
await interaction.response.send_message(
@ -131,6 +137,16 @@ async def adopter(interaction: discord.Interaction, enfant: discord.Member):
ephemeral=True
)
@bot.tree.command(name="racine", description="Définir un membre comme racine")
@commands.has_permissions(administrator=True)
async def racine(interaction: discord.Interaction, membre: discord.Member, est_racine: bool):
success = family.set_as_root(str(membre.id), est_racine)
await interaction.response.send_message(
f"{membre.mention} est maintenant {'une racine' if est_racine else 'plus une racine'} !"
if success else "❌ Erreur",
ephemeral=True
)
@bot.tree.command(name="couple", description="Officialiser une relation")
async def couple(interaction: discord.Interaction, partenaire: discord.Member):
membre = interaction.user
@ -170,7 +186,7 @@ async def renier(interaction: discord.Interaction, enfant: discord.Member):
"PETIT_ENFANT" if generation == 2 else
"ARRIERE_PETIT_ENFANT"
)
if role_id:
role = interaction.guild.get_role(role_id)
if role:
@ -191,7 +207,7 @@ async def renier(interaction: discord.Interaction, enfant: discord.Member):
@bot.tree.command(name="arbre", description="Afficher l'arbre généalogique")
async def arbre(interaction: discord.Interaction):
await interaction.response.defer()
# Télécharge les avatars des membres
members = family.get_all_members()
for member_id in members:
@ -203,7 +219,7 @@ async def arbre(interaction: discord.Interaction):
# Génère l'arbre
generate_tree("family.json", "arbre.png", config["ROOT_MEMBER_ID"])
# Envoie le résultat
try:
await interaction.followup.send(file=discord.File("arbre.png"))
@ -238,7 +254,7 @@ async def init(ctx):
for member in ctx.guild.members:
await update_member(member)
count += 1
await ctx.send(f"{count} membres initialisés !")
bot.run(TOKEN)