【发布时间】:2021-12-09 08:47:20
【问题描述】:
介绍
我想在 discord.js v13 中使用来自discord.js-pagination 的页面生成。
源代码使用createReactionCollector,但collect不起作用。
详细说明
两个反应按钮显示正确。它还正确运行超时,并且两个按钮在 12000 毫秒后被移除。
问题是当我按下反应按钮时没有反应。 “收集”不起作用。
我不敢相信“end”被执行了,但“collect”却没有。 谁能给我一个线索?
源代码
static async paginationEmbed(msg: Message, pages:MessageEmbed[], emojiList = ['⏪', '⏩'], timeout = 12000)
{
if (!pages) throw new Error('Pages are not given.');
if (emojiList.length !== 2) throw new Error('Need two emojis.');
let page = pages.length - 1;
const curPage = await msg.channel.send({ embeds: [pages[page].setFooter(`Page ${page + 1} / ${pages.length}`)]});
for (const emoji of emojiList) await curPage.react(emoji);
const filter = (reaction:MessageReaction, user:User) => {
return true;
}
const reactionCollector = curPage.createReactionCollector({ filter, time: timeout });
reactionCollector.on('collect', (reaction, user) => {
console.log("I want to show this!!")
reaction.users.remove(msg.author);
switch (reaction.emoji.name) {
case emojiList[0]:
page = page > 0 ? --page : pages.length - 1;
break;
case emojiList[1]:
page = page + 1 < pages.length ? ++page : 0;
break;
default:
break;
}
curPage.edit({ embeds: [pages[page].setFooter(`Page ${page + 1} / ${pages.length}`)]});
});
reactionCollector.on('end', () => {
if (!curPage.deleted) {
curPage.reactions.removeAll()
}
});
return curPage;
}
环境
discord.js@13.1.0
(通过npm ls获取)
加法
我的客户正在关注:
const client = new Discord.Client({
intents: ['GUILD_VOICE_STATES', 'GUILD_MESSAGES', 'GUILD_MEMBERS', 'GUILDS']
});
【问题讨论】:
-
你的意图是什么?
-
感谢您的评论。我想在按下反应按钮时启用“收集”。
-
很抱歉,这不是本文的目标。我知道那令人困惑。我的意思是您为客户提供的意图是什么?
-
我明白了。 “客户”是指discord.js.org/#/docs/main/stable/class/Client吗? “意图”是指discordjs.guide/popular-topics/intents.html#privileged-intents吗?对不起,我是初学者。
-
对不起,神话先生。我明白你的意思。
intents: ['GUILD_VOICE_STATES', 'GUILD_MESSAGES', 'GUILDS']这是我的意图。
标签: javascript discord discord.js