Я пишу бот-диск с использованием discord.js, и недавно я добавил команду // translate, которая использует API Google Translate для перевода между всеми языками, поддерживаемыми Google Translate.Я хочу добавить возможность быстрого повторного перевода перевода обратно на английский, используя реакции, и я хочу, чтобы бот проверил, отреагировал ли 1 человек на сообщение с предоставленной реакцией, и, если они это сделали, повторно переведет перевод обратно.на английский.
Я действительно близко, но я столкнулся с проблемой, что я не могу заставить бота проверить, послал ли он сам реакцию, поэтому он автоматически переводит обратно на английский, потому что этообнаруживая свою собственную реакцию.Я хочу, чтобы он пере-переводил только тогда, когда реагирует A PERSON, и только ОДИН РАЗ.
Я пока не очень знаком с этой областью discord.js, поэтому не могу понять, как это сделать.it.
Вот код:
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
, бот снова переводит обратно на английский, потому что он обнаруживает свою собственную реакцию.
Любая помощь будет принята!