This commit is contained in:
Louis Mazin 2025-07-01 18:35:21 +02:00
parent 910fda50b1
commit 138900522f

View File

@ -3,22 +3,48 @@ const { SlashCommandBuilder } = require('discord.js');
module.exports = { module.exports = {
data: new SlashCommandBuilder() data: new SlashCommandBuilder()
.setName('trad') .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) { async execute(interaction, translator) {
if (!translator) { if (!translator) {
await interaction.reply({ content: '❌ Le service de traduction n\'est pas disponible (token DeepL manquant).', ephemeral: true }); await interaction.reply({ content: '❌ Le service de traduction n\'est pas disponible (token DeepL manquant).', ephemeral: true });
return; return;
} }
// Si pas de message en réponse, chercher le message référencé
let messageToTranslate = null; let messageToTranslate = null;
const messageLien = interaction.options.getString('lien');
if (interaction.channel && interaction.channel.lastMessage) {
// Récupérer le dernier message avant cette interaction if (messageLien) {
const messages = await interaction.channel.messages.fetch({ limit: 2 }); // Extraire les IDs du lien Discord
const messagesArray = Array.from(messages.values()); const linkPattern = /https:\/\/discord\.com\/channels\/(\d+)\/(\d+)\/(\d+)/;
messageToTranslate = messagesArray[1]; // Le message avant l'interaction 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() === '') { if (!messageToTranslate || !messageToTranslate.content || messageToTranslate.content.trim() === '') {