Я хочу, чтобы бот всегда обнаруживал реакции на выполнение кода (здесь я пытаюсь создать канал, реагируя).
Я пытался использовать Reaction Collector, но у него есть таймер, и его нельзя использовать для каждого сообщения.
Мне нужен пример, пожалуйста, я действительно много чего перепробовал и не нашел ничего полезного в документах. ?
я знаю об этом
I tried to use Reaction Collector but it has a timer...
Мои извинения за это заблуждение; Я ошибся, когда ранее намекал, что коллекционеры ограничены во времени.
Согласно документам, отсутствие параметра 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
.
Да, я знаю, и у меня есть некоторые существующие определенные сообщения, я хочу, чтобы участники могли создавать голосовые каналы при реагировании, для каждого сообщения есть отдельный канал для создания, я не собираюсь делать это автоматически, например, отображать это сообщение, когда выполнить команду, так что да, единственное, что я должен сделать, это получить идентификаторы сообщений, и я поставлю их на «если», так что да, это хорошо для меня, но я все еще не знаю, как это сделать.
Вы имеете в виду, что сообщения уже были отправлены, и вы хотите собрать реакцию на них?
Точно или лучше: все сообщения уже были отправлены на определенный канал, поэтому нам не нужно получать идентификатор каждого канала.
Можно ли отправлять сообщения повторно или нужно использовать существующие?
И мы можем сделать содержимое сообщения в качестве названия канала.
некоторые существующие вставки на канале под названием «создать голосовые каналы»
Итак, есть идеи??
Возможно, лучше задать вопрос на сервере помощи разработчикам Discord. Ссылка на него здесь: discordapp.com/developers/docs/intro#getting-help