В discord. js responseCollector не останавливается после вызова метода stop () - PullRequest
0 голосов
/ 06 мая 2020

Я работаю над ботом в разногласиях. 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 (), потому что я его отлаживал, но по некоторым причинам конец событие никогда не вызывается. Любая помощь?

1 Ответ

1 голос
/ 06 мая 2020

Я думаю, это потому, что вы сначала останавливаете его, а затем подключаете событие, поэтому оно не сработает, потому что сборщик уже закончился.

...