#javascript #discord.js
#javascript #discord.js
Вопрос:
Итак, я пытаюсь создать сборщик реакций, который приостанавливает / воспроизводит музыку после реакции пользователя на реакцию, но мой сборщик останавливается, когда пользователь реагирует 1 раз (пользователь не может реагировать дважды, только один раз), как я могу это исправить? это мой код:
queue.textChannel.send(thing).then((question) => {
question.react('⏸');
question.react('▶️');
question.react('⬅️');
question.react('⏹️');
const filter = (reaction, user) => {
return ['⏹️', '⬅️','⏸','▶️'].includes(reaction.emoji.name) amp;amp; !user.bot;
};
const collector = question.createReactionCollector(filter, {
max: 1,
time: 0
});
collector.on('end', (collected, reason) => {
if (reason === 'time') {
msg.reply('Times Up');
} else {
const userReaction = collected.array()[0];
const emoji = userReaction._emoji.name;
Комментарии:
1. Почему вы используете эту
max: 1
опцию, если хотите получить более одного сообщения?2. Я использовал max: 2, и это не работает даже для одной реакции.
3. Что ж, если вы только прослушиваете
end
событие, оно не сработает, если вы соберете одну реакцию.end
срабатывает только тогда, когда сборщик закончил сбор (т.е. достигmax
илиtime
). Вместо этого вы должны использоватьcollect
событие.4. Спасибо за помощь: D
5. Пожалуйста 🙂
Ответ №1:
Я исправил это, изменив сборщик с «end» на «collect» и удалил параметр max:.
queue.textChannel.send(thing).then((question) => {
question.react('⏸');
question.react('▶️');
question.react('⬅️');
question.react('⏹️');
const filter = (reaction, user) => {
return ['⏹️', '⬅️','⏸','▶️'].includes(reaction.emoji.name) amp;amp; !user.bot;
};
const collector = question.createReactionCollector(filter, { time: 400000 });
collector.on('collect', (reaction, reactionCollector) => {
const emoji = reaction.emoji.name;
@ZsoltMeszaros помог мне с правильным ответом.