fix: restauration du design des MPs de validation et ajout du choix de statut à la réouverture des tickets
This commit is contained in:
parent
9045b374fa
commit
d82f704c75
1 changed files with 54 additions and 20 deletions
|
|
@ -430,26 +430,50 @@ class ClosedTicketView(discord.ui.view.View):
|
|||
return await interaction.followup.send("❌ Impossible de trouver le propriétaire du ticket à réouvrir.", ephemeral=True)
|
||||
|
||||
try:
|
||||
await interaction.channel.set_permissions(owner, read_messages=True, send_messages=True)
|
||||
|
||||
# Rétablir le nom original en se basant sur la validation
|
||||
citoyen_role_id = settings.get("citoyen_role_id")
|
||||
attente_oral_role_id = settings.get("attente_oral_role_id")
|
||||
|
||||
prefix = "ouvert"
|
||||
if citoyen_role_id and any(r.id == int(citoyen_role_id) for r in owner.roles):
|
||||
prefix = "accepté"
|
||||
elif attente_oral_role_id and any(r.id == int(attente_oral_role_id) for r in owner.roles):
|
||||
prefix = "oral-à-faire"
|
||||
|
||||
await interaction.channel.edit(name=f"{prefix}-{owner.display_name}".replace(" ", "-").lower()[:100])
|
||||
# On demande au staff quel statut remettre
|
||||
embed = discord.Embed(
|
||||
title="♻️ Réouverture du Ticket",
|
||||
description=f"Choisissez le statut à appliquer pour **{owner.display_name}**.",
|
||||
color=discord.Color.blue()
|
||||
)
|
||||
view = ReopenStatusView(owner)
|
||||
await interaction.channel.send(embed=embed, view=view)
|
||||
await interaction.followup.send("✅ Choisissez le statut ci-dessous.", ephemeral=True)
|
||||
except Exception as e:
|
||||
kuby_logger.error(f"Erreur lors de la préparation de réouverture: {e}")
|
||||
await interaction.followup.send(f"❌ Erreur : {e}", ephemeral=True)
|
||||
|
||||
class ReopenStatusView(discord.ui.view.View):
|
||||
"""Vue pour choisir le statut lors d'une réouverture"""
|
||||
def __init__(self, owner: discord.Member):
|
||||
super().__init__(timeout=180)
|
||||
self.owner = owner
|
||||
|
||||
@discord.ui.button(label="Écrit (Ouvert)", style=discord.ButtonStyle.secondary)
|
||||
async def set_written(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||
await self.apply_status(interaction, "ouvert")
|
||||
|
||||
@discord.ui.button(label="Oral (À faire)", style=discord.ButtonStyle.primary)
|
||||
async def set_oral(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||
await self.apply_status(interaction, "oral-à-faire")
|
||||
|
||||
@discord.ui.button(label="Accepté", style=discord.ButtonStyle.success)
|
||||
async def set_accepted(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||
await self.apply_status(interaction, "accepté")
|
||||
|
||||
async def apply_status(self, interaction: discord.Interaction, prefix: str):
|
||||
await interaction.response.defer(ephemeral=True)
|
||||
try:
|
||||
await interaction.channel.set_permissions(self.owner, read_messages=True, send_messages=True)
|
||||
new_name = f"{prefix}-{self.owner.display_name}".replace(" ", "-").lower()[:100]
|
||||
await interaction.channel.edit(name=new_name)
|
||||
|
||||
new_view = TicketManagementView()
|
||||
await interaction.channel.send(f"✅ Ticket réouvert par {interaction.user.mention}.", view=new_view)
|
||||
await interaction.followup.send("✅ Ticket réouvert.", ephemeral=True)
|
||||
await interaction.channel.send(f"✅ Ticket réouvert par {interaction.user.mention} (Statut: {prefix}).", view=new_view)
|
||||
await interaction.followup.send(f"✅ Statut {prefix} appliqué.", ephemeral=True)
|
||||
self.stop()
|
||||
except Exception as e:
|
||||
kuby_logger.error(f"Erreur lors de la réouverture du ticket: {e}")
|
||||
await interaction.followup.send(f"❌ Erreur lors de la réouverture : {e}", ephemeral=True)
|
||||
await interaction.followup.send(f"❌ Erreur : {e}", ephemeral=True)
|
||||
|
||||
@discord.ui.button(label="❌ Supprimer le Ticket", style=discord.ButtonStyle.danger, custom_id="delete_ticket")
|
||||
async def delete_ticket(self, interaction: discord.Interaction, button: discord.ui.Button):
|
||||
|
|
@ -598,7 +622,7 @@ class Ticket(commands.Cog):
|
|||
)
|
||||
await message.channel.send(embed=embed_val)
|
||||
|
||||
# DM au joueur
|
||||
# DM au joueur (RESTAURATION DESIGN CAPTURE)
|
||||
try:
|
||||
embed_dm = discord.Embed(
|
||||
title="🎉 Félicitations - Citoyenneté Validée !",
|
||||
|
|
@ -607,7 +631,11 @@ class Ticket(commands.Cog):
|
|||
)
|
||||
embed_dm.add_field(name="🏙️ Nouveau Statut", value="Citoyen", inline=True)
|
||||
embed_dm.add_field(name="📍 Serveur", value=message.guild.name, inline=True)
|
||||
embed_dm.add_field(name="📋 Prochaine étape", value="Tu peux désormais te connecter au serveur et commencer ton aventure RP. N'oublie pas de consulter les salons d'informations !", inline=False)
|
||||
embed_dm.add_field(name="🔗 Lien vers ton ticket", value=f"[Clique ici pour voir ton ticket]({message.channel.jump_url})", inline=False)
|
||||
embed_dm.set_footer(text=f"L'équipe {message.guild.name}")
|
||||
if message.guild.icon: embed_dm.set_thumbnail(url=message.guild.icon.url)
|
||||
|
||||
await user.send(embed=embed_dm)
|
||||
except: pass
|
||||
|
||||
|
|
@ -628,13 +656,19 @@ class Ticket(commands.Cog):
|
|||
)
|
||||
await message.channel.send(embed=embed_val)
|
||||
|
||||
# DM au joueur
|
||||
# DM au joueur (RESTAURATION DESIGN CAPTURE)
|
||||
try:
|
||||
embed_dm = discord.Embed(
|
||||
title="📝 Validation Étape Écrite",
|
||||
description=f"Ta candidature écrite sur **{message.guild.name}** a été validée ! Merci de te rendre en vocal 'Attente Oral'.",
|
||||
description=f"Ta candidature écrite sur **{message.guild.name}** a été examinée et validée par notre équipe !",
|
||||
color=discord.Color.orange()
|
||||
)
|
||||
embed_dm.add_field(name="🎤 Statut Actuel", value="Attente Oral", inline=True)
|
||||
embed_dm.add_field(name="🛠️ Action Requise", value="Merci de te rendre dans le salon vocal 'Attente Oral' dès que tu es disponible pour passer ton entretien.", inline=False)
|
||||
embed_dm.add_field(name="🔗 Lien vers ton ticket", value=f"[Clique ici pour voir ton ticket]({message.channel.jump_url})", inline=False)
|
||||
embed_dm.set_footer(text=f"L'équipe {message.guild.name}")
|
||||
if message.guild.icon: embed_dm.set_thumbnail(url=message.guild.icon.url)
|
||||
|
||||
await user.send(embed=embed_dm)
|
||||
except: pass
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue