Я создаю бота, где игроки могут соревноваться друг с другом. После публикации команды вызова, которая включает в себя список игроков, которым они хотят выполнить вызов, я заставляю своего бота получать идентификаторы разницы для каждого из этих пользователей.
Затем у меня есть пост бота в канале испытаний, в котором перечислены игроки, и я жду реакции только тех игроков, которые получили вызов. Я сделал сборщик реакций, чтобы собрать эти реакции. Я хочу отфильтровать эти реакции, чтобы они включали только те, которые были оспорены, чтобы случайные игроки не смогли захватить задачу.
В приведенном ниже коде uniquePlayersIDArray представляет собой массив разрозненных идентификаторов пользователя. Я просто хочу, чтобы бот собирал реакции только от пользователей из этого массива.
Я пытался использовать uniquePlayersIDArray.indexOf (user.id), чтобы определить, находится ли пользователь в массиве. Как показано ниже, я попробовал uniquePlayersIDArray.includes (user.id).
async function acceptQuestion() {
const agree = "✅"
const disagree = "❌"
let msg = await message.channel.send(`A challenge has been issued by ${author}?\n\n**IF** you are listed above, please select one of the following to accept or deny the challenge...`)
await msg.react(agree)
await msg.react(disagree)
const filter = (reaction, user) => {
return ['✅', '❌'].includes(reaction.emoji.name) && uniquePlayersIDArray.includes(user.id);
};
const collector = await msg.createReactionCollector(filter, { time: 15000 });
collector.on('collect', (reaction, reactionCollector) => {
console.log(`Collected ${reaction.emoji.name}`)
if (reaction.emoji.name === '✅') {
message.channel.send(`${reaction.user} has **accepted** the challenge! Please await 5 minutes to pass or for all challenged players to respond!`)
} else if (reaction.emoji.name === '❌') {
message.channel.send(`${reaction.user} has **declined* the challenge! Please await 5 minutes to pass or for all challenged players to respond!`)
}
});
collector.on('end', collected => {
console.log(`Collected ${collected.size} items`);
});
}
Я знаю, что это работает без добавления чего-либо после ".include (Reaction.emoji.name)" в операторе фильтра, но тогда он принимает все реакции.
Я просто хочу, чтобы все реакции людей, которых не оспаривали, игнорировались.
Спасибо за помощь заранее.