50 lines
1.9 KiB
JavaScript
50 lines
1.9 KiB
JavaScript
const { SlashCommandBuilder } = require('discord.js');
|
|
|
|
module.exports = {
|
|
data: new SlashCommandBuilder()
|
|
.setName('trad')
|
|
.setDescription('Traduit le message auquel vous répondez en français'),
|
|
async execute(interaction, translator) {
|
|
if (!translator) {
|
|
await interaction.reply({ content: '❌ Le service de traduction n\'est pas disponible (token DeepL manquant).', ephemeral: true });
|
|
return;
|
|
}
|
|
|
|
// Vérifier si la commande est en réponse à un message
|
|
const repliedMessage = interaction.options.getMessage('message') ||
|
|
(interaction.channel.messages.cache.get(interaction.targetId)) ||
|
|
null;
|
|
|
|
// 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
|
|
}
|
|
|
|
if (!messageToTranslate || !messageToTranslate.content || messageToTranslate.content.trim() === '') {
|
|
await interaction.reply({ content: '❌ Aucun message à traduire trouvé. Utilisez cette commande en répondant à un message ou après un message contenant du texte.', ephemeral: true });
|
|
return;
|
|
}
|
|
|
|
try {
|
|
await interaction.deferReply();
|
|
|
|
// Traduire le message en français
|
|
const result = await translator.translateText(messageToTranslate.content, null, 'fr');
|
|
|
|
// Créer la réponse avec la traduction
|
|
const translationMessage = `🇫🇷 **Traduction :**\n${result.text}\n\n*Message original de ${messageToTranslate.author.username}*`;
|
|
|
|
await interaction.editReply(translationMessage);
|
|
|
|
} catch (error) {
|
|
console.error('Erreur lors de la traduction:', error);
|
|
await interaction.editReply('❌ Erreur lors de la traduction du message.');
|
|
}
|
|
},
|
|
};
|