Я пытался использовать Коллектор реакции, но у него есть таймер ...
Мои извинения за это заблуждение;Я ошибался, когда ранее подразумевал, что коллекторы ограничены по времени.
В соответствии с документами, опция 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
.