Ajout de la sélection de tags pour les posts dans les forums lors du transfert de messages. Mise à jour de la classe TransferReasonModal pour inclure les tags sélectionnés et ajout d'une nouvelle classe ForumTagSelect pour gérer la sélection des tags. Amélioration de l'interaction utilisateur avec des messages contextuels pour la sélection des tags.

This commit is contained in:
2026-02-14 20:15:08 +01:00
parent 60b90edcb3
commit 651773e63d
+47 -1
View File
@@ -1719,11 +1719,12 @@ class TransferReasonModal(Modal, title="Raison du transfert"):
style=discord.TextStyle.paragraph style=discord.TextStyle.paragraph
) )
def __init__(self, message: discord.Message, bot, target_channel): def __init__(self, message: discord.Message, bot, target_channel, selected_tags=None):
super().__init__() super().__init__()
self.message = message self.message = message
self.bot = bot self.bot = bot
self.target_channel = target_channel self.target_channel = target_channel
self.selected_tags = selected_tags or []
async def on_submit(self, interaction: discord.Interaction): async def on_submit(self, interaction: discord.Interaction):
await interaction.response.defer(ephemeral=True) await interaction.response.defer(ephemeral=True)
@@ -1773,10 +1774,15 @@ class TransferReasonModal(Modal, title="Raison du transfert"):
content=full_content, content=full_content,
embeds=embeds[:10] if embeds else [], embeds=embeds[:10] if embeds else [],
files=files_to_send, files=files_to_send,
applied_tags=self.selected_tags,
reason=f"Transfert depuis {source_channel.name} par {interaction.user.name}" reason=f"Transfert depuis {source_channel.name} par {interaction.user.name}"
) )
transferred_message = thread.message transferred_message = thread.message
if self.selected_tags:
tag_names = ", ".join([tag.name for tag in self.selected_tags])
logging.info(f"Post créé avec les tags: {tag_names}")
except discord.HTTPException as e: except discord.HTTPException as e:
logging.error(f"Erreur lors de la création du post dans le forum: {e}") logging.error(f"Erreur lors de la création du post dans le forum: {e}")
await interaction.followup.send(f"❌ Erreur lors de la création du post: {str(e)}", ephemeral=True) await interaction.followup.send(f"❌ Erreur lors de la création du post: {str(e)}", ephemeral=True)
@@ -1862,6 +1868,42 @@ class TransferReasonModal(Modal, title="Raison du transfert"):
await send_to_moderation_log_channel(self.bot, log_embed) await send_to_moderation_log_channel(self.bot, log_embed)
class ForumTagSelect(Select):
def __init__(self, message: discord.Message, bot, target_channel: ForumChannel):
options = []
for tag in target_channel.available_tags[:25]:
options.append(discord.SelectOption(
label=tag.name,
value=str(tag.id),
emoji=tag.emoji if tag.emoji else None
))
super().__init__(
placeholder="Sélectionnez un ou plusieurs tags...",
options=options,
min_values=1,
max_values=min(5, len(options))
)
self.message = message
self.bot = bot
self.target_channel = target_channel
async def callback(self, interaction: discord.Interaction):
selected_tags = []
for tag_id_str in self.values:
tag_id = int(tag_id_str)
tag = discord.utils.get(self.target_channel.available_tags, id=tag_id)
if tag:
selected_tags.append(tag)
modal = TransferReasonModal(self.message, self.bot, self.target_channel, selected_tags)
await interaction.response.send_modal(modal)
class ForumTagView(View):
def __init__(self, message: discord.Message, bot, target_channel: ForumChannel):
super().__init__(timeout=180)
self.add_item(ForumTagSelect(message, bot, target_channel))
class TransferChannelSelect(ChannelSelect): class TransferChannelSelect(ChannelSelect):
def __init__(self, message: discord.Message, bot): def __init__(self, message: discord.Message, bot):
super().__init__( super().__init__(
@@ -1881,6 +1923,10 @@ class TransferChannelSelect(ChannelSelect):
await interaction.response.send_message("❌ Impossible de récupérer le canal sélectionné.", ephemeral=True) await interaction.response.send_message("❌ Impossible de récupérer le canal sélectionné.", ephemeral=True)
return return
if isinstance(target_channel, ForumChannel) and target_channel.available_tags:
view = ForumTagView(self.message, self.bot, target_channel)
await interaction.response.send_message("🏷️ Sélectionnez un ou plusieurs tags pour ce post :", view=view, ephemeral=True)
else:
modal = TransferReasonModal(self.message, self.bot, target_channel) modal = TransferReasonModal(self.message, self.bot, target_channel)
await interaction.response.send_modal(modal) await interaction.response.send_modal(modal)