Я работаю над ботом в разногласиях. js и в настоящее время пытаюсь сделать следующее: запуская команду с именем tournament prepare
, бот ждет ввода пользователя с помощью reactionCollector
, собирая реакции пользователи, которые хотят принять участие в турнире.
Позже, когда пользователь, запустивший турнир, использует команду tournament begin
, бот должен закрыть сборщик и вывести список с именами игроков, которые присоединился к мероприятию.
Это то, что я пробовал:
// initialise the collector
var collector = null;
if(message.content.startsWith(`${prefix}prepare`)) {
message.channel.send('A message')
.then(async function (message) {
await message.react('⚔')
const filter = (reaction, user) => {
return reaction.emoji.name === '⚔' && user.id != 705462496646922311
};
collector = message.createReactionCollector(filter);
collector.on('collect', (reaction, user) => {
// code here
});
})
.catch(function() {
message.channel.send('Error while adding the reaction. Try again')
});
}
if(message.content.startsWith(`${prefix}begin`)) {
if(collector == null) {
message.channel.send('Error message');
return;
}
collector.stop();
collector.on('end', collected => {
// code here
});
}
Все работает нормально до конечного события. В документации говорится о методе stop (): Stops this collector and emits the end event.
Я уверен, что сборщик остановлен после использования метода stop (), потому что я его отлаживал, но по некоторым причинам конец событие никогда не вызывается. Любая помощь?