test
This commit is contained in:
parent
4e0f1678be
commit
918cd3ffc9
49
commands/trad/trad.js
Normal file
49
commands/trad/trad.js
Normal 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.');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
46
index.js
46
index.js
@ -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,7 +68,9 @@ 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{
|
} else if (interaction.commandName === 'trad') {
|
||||||
|
await command.execute(interaction, translator);
|
||||||
|
} else {
|
||||||
await command.execute(interaction);
|
await command.execute(interaction);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user