diff --git a/commands/trad/trad.js b/commands/trad/trad.js index df47db4..9effef4 100644 --- a/commands/trad/trad.js +++ b/commands/trad/trad.js @@ -3,22 +3,48 @@ const { SlashCommandBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('trad') - .setDescription('Traduit le message auquel vous répondez en français'), + .setDescription('Traduit le message auquel vous répondez en français') + .addStringOption(option => + option.setName('lien') + .setDescription('Lien du message à traduire (optionnel)') + .setRequired(false) + ), async execute(interaction, translator) { if (!translator) { await interaction.reply({ content: '❌ Le service de traduction n\'est pas disponible (token DeepL manquant).', ephemeral: true }); return; } - - // Si pas de message en réponse, chercher le message référencé let messageToTranslate = null; - - if (interaction.channel && interaction.channel.lastMessage) { - // Récupérer le dernier message avant cette interaction - const messages = await interaction.channel.messages.fetch({ limit: 2 }); - const messagesArray = Array.from(messages.values()); - messageToTranslate = messagesArray[1]; // Le message avant l'interaction + const messageLien = interaction.options.getString('lien'); + + if (messageLien) { + // Extraire les IDs du lien Discord + const linkPattern = /https:\/\/discord\.com\/channels\/(\d+)\/(\d+)\/(\d+)/; + const match = messageLien.match(linkPattern); + + if (!match) { + await interaction.reply({ content: '❌ Lien de message invalide. Utilisez un lien Discord valide.', ephemeral: true }); + return; + } + + const [, guildId, channelId, messageId] = match; + + try { + const channel = await interaction.client.channels.fetch(channelId); + messageToTranslate = await channel.messages.fetch(messageId); + } catch (error) { + await interaction.reply({ content: '❌ Impossible de récupérer le message depuis ce lien.', ephemeral: true }); + return; + } + } else { + // Si pas de message en réponse, chercher le message référencé + if (interaction.channel && interaction.channel.lastMessage) { + // Récupérer le dernier message avant cette interaction + const messages = await interaction.channel.messages.fetch({ limit: 2 }); + const messagesArray = Array.from(messages.values()); + messageToTranslate = messagesArray[1]; // Le message avant l'interaction + } } if (!messageToTranslate || !messageToTranslate.content || messageToTranslate.content.trim() === '') {