Я пишу бота Discord, используя discord.js, и недавно я добавил команду // translate, которая использует Google Translate API для перевода между всеми языками, поддерживаемыми Google Translate. Я хочу добавить возможность быстрого повторного перевода перевода обратно на английский, используя реакции, и я хочу, чтобы бот проверял, отреагировал ли 1 человек на сообщение предоставленной реакцией, и, если да, повторно переводил перевод обратно на английский.
Я действительно близок, но я столкнулся с проблемой, что я не могу заставить бота проверять, отправил ли он сам реакцию, поэтому он автоматически переводит обратно на английский, потому что он определяет свою собственную реакцию. Я хочу, чтобы он переводился только тогда, когда реагирует ЧЕЛОВЕК, и только ОДИН РАЗ.
Я еще не очень хорошо знаком с этой областью discord.js, поэтому не могу понять, как это сделать.
Вот код:
if (msg.content.startsWith(`${prefix}translate`) || msg.content.startsWith(`${prefix}t`)) {
const text = args.slice(1).join(` `);
if (!text) return msg.channel.send(`Nothing to translate provided! Languages codes are at https://cloud.google.com/translate/docs/languages !\n Command syntax: \`${prefix}translate\` or \`${prefix}t\` [text] [language code]`);
const text1 = text.substring(0, text.length - 2)
const target = text.substring(text.length - 2, text.length) || languages
translate
.translate(text1, target)
.then(results => {
const translation = results[0];
msg.channel.send(`Translation: ${translation}`).then(sentText => {
sentText.react(`????`);
const filter = (reaction, user) => {
return ['????'].includes(reaction.emoji.name);
};
sentText.awaitReactions(filter, { max: 2, time: 5000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '????' && sentText.react.me === false) {
const target = `en`
translate
.translate(text1, target)
.then(results => {
const translation = results[0];
msg.channel.send(`Translation: ${translation}`);
})
.catch(err => {
console.log(err);
})
}
})
})
})
//code for command continues below this line, but it is irrelevant to what I'm trying to achieve
Ожидаемый результат: Бот повторно переводит обратно на английский, если пользователь реагирует предоставленной реакцией, и только один раз.
Фактический результат: бот ничего не делает, или, если я удалю && sentText.react.me === false
, бот повторно переводит обратно на английский, потому что он определяет свою реакцию.
Любая помощь будет оценена по достоинству!