This commit is contained in:
Louis Mazin 2025-07-01 18:30:47 +02:00
parent 4e0f1678be
commit 918cd3ffc9
2 changed files with 52 additions and 43 deletions

49
commands/trad/trad.js Normal file
View File

@ -0,0 +1,49 @@
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.');
}
},
};

View File

@ -55,48 +55,6 @@ client.once('ready', () => {
deploy(token); deploy(token);
}); });
client.on('messageReactionAdd', async (reaction, user) => {
console.log('reaction received', reaction.emoji.name, user.username);
if (user.bot) return;
if (reaction.emoji.name !== '❓') return;
if (!translator) {
console.log('DeepL token not provided, translation feature disabled');
return;
}
try {
// Récupérer le message complet si nécessaire
if (reaction.partial) {
await reaction.fetch();
}
if (reaction.message.partial) {
await reaction.message.fetch();
}
const message = reaction.message;
console.log(message);
// Vérifier qu'il y a du contenu à traduire
if (!message.content || message.content.trim() === '') {
return;
}
// Traduire le message en français
const result = await translator.translateText(message.content, null, 'fr');
// Créer la réponse avec la traduction
const translationMessage = `🇫🇷 **Traduction :**\n${result.text}\n\n*Message original de ${message.author.username}*`;
// Envoyer la traduction dans le même canal
await message.reply(translationMessage);
} catch (error) {
console.error('Erreur lors de la traduction:', error);
// Optionnel : notifier l'utilisateur de l'erreur
await reaction.message.reply('❌ Erreur lors de la traduction du message.');
}
});
client.on(Events.InteractionCreate, async interaction => { client.on(Events.InteractionCreate, async interaction => {
if (!interaction.isChatInputCommand()) return; if (!interaction.isChatInputCommand()) return;
@ -110,6 +68,8 @@ client.on(Events.InteractionCreate, async interaction => {
try { try {
if (interaction.commandName === 'server-stats') { if (interaction.commandName === 'server-stats') {
await command.execute(interaction, palworldToken); await command.execute(interaction, palworldToken);
} else if (interaction.commandName === 'trad') {
await command.execute(interaction, translator);
} else { } else {
await command.execute(interaction); await command.execute(interaction);
} }