Как заставить бот обнаруживать реакцию на каждое сообщение на канале? - PullRequest
0 голосов
/ 31 мая 2019

Я хочу, чтобы бот всегда обнаруживал реакции на выполнение кода (здесь я пытаюсь создать канал по реакции).

Я пытался использовать Reaction Collector, но у него есть таймер, и он можетне будет использоваться для каждого сообщения.

Мне нужен пример, пожалуйста, я действительно много чего перепробовал и не нашел ничего полезного в документах.?

1 Ответ

0 голосов
/ 31 мая 2019

Я пытался использовать Коллектор реакции, но у него есть таймер ...

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

В соответствии с документами, опция time по умолчанию не ограничена (см. CollectorOptions),Поэтому в этом примере следует продолжать поиск реакции пользователя до тех пор, пока бот не остановится.

message.channel.send('React with ?.')
  .then(m => {
    const filter = (reaction, user) => user.id === message.author.id && reaction.emoji.name === '?';
    const collector = m.createReactionCollector(filter, { max: 1 });

    collector.on('collect', () => {
      message.clearReactions();
      message.edit('You did it!');
    });
  })
  .catch(console.error);

Однако, как уже упоминалось, если бот остановится, сборщик остановится.Там нет простого способа обойти это.Если вы действительно хотите бесконечный сбор, единственное решение, которое я вижу, - это сохранить список сообщений и соответствующих сборщиков в базе данных (или в файле json) и снова применить их к существующим сообщениям в клиентском событии ready.

...