【问题标题】:DISCORD JS v13 createReactionCollector "collect" doesn't work [duplicate]DISCORD JS v13 createReactionCollector“收集”不起作用[重复]
【发布时间】: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']
 });

createReactionCollector not triggering

【问题讨论】:

  • 你的意图是什么?
  • 感谢您的评论。我想在按下反应按钮时启用“收集”。
  • 很抱歉,这不是本文的目标。我知道那令人困惑。我的意思是您为客户提供的意图是什么?
  • 我明白了。 “客户”是指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


【解决方案1】:

我可以解决这个问题。

与代码无关,忘记添加 GUILD_MESSAGE_REACTIONS 意图。

createReactionCollector not working in discord.js

const client = new Discord.Client({
 intents: ['GUILD_VOICE_STATES', 'GUILD_MESSAGES', 'GUILDS', 'GUILD_MESSAGE_REACTIONS'],
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 2020-09-13
    • 1970-01-01
    • 2021-12-20
    • 2021-04-20
    • 2021-05-12
    • 1970-01-01
    相关资源
    最近更新 更多