You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js v13运行v12版discord-pagination提示Cannot send an empty message如何解决

discord.js v12 分页插件适配 v13 修改方案

你遇到的Cannot send an empty message报错是discord.js v13的消息接口重大变更导致的,需要同步修改多处API调用,具体调整如下:

核心变更点

  • v13不再支持直接将Embed实例作为channel.send()的入参,必须显式封装到embeds数组中,消息编辑逻辑同理
  • MessageEmbed.setFooter()方法参数调整:不再直接接收字符串,需传入{ text: 页脚内容 }格式的对象
  • 反应用户移除方法更名:reaction.users.remove()改为reaction.users.delete()
  • 反应收集器参数结构调整:createReactionCollector()第一个参数改为配置对象,过滤逻辑需放在配置的filter字段中
  • 前置依赖:需确保你的bot已开启GUILD_MESSAGE_REACTIONS、GUILD_MESSAGES网关意图,否则无法正常监听反应事件

修改后完整代码

const paginationEmbed = async (msg, pages, emojiList = ["⏪", "⏩"], timeout = 120000) => {
    if (!msg && !msg.channel) throw new Error("Channel is inaccessible.");
    if (!pages) throw new Error("Pages are not given.");
    if (emojiList.length !== 2) throw new Error("Need two emojis.");
    let page = 0;
    // 调整send参数结构,修改setFooter入参格式
    const curPage = await msg.channel.send({
        embeds: [pages[page].setFooter({ text: `Page ${page + 1} / ${pages.length}` })]
    });
    for (const emoji of emojiList) await curPage.react(emoji);
    // 调整收集器参数结构,将filter放入配置对象
    const reactionCollector = curPage.createReactionCollector({
        filter: (reaction, user) => emojiList.includes(reaction.emoji.name) && !user.bot,
        time: timeout
    });
    reactionCollector.on("collect", (reaction) => {
        // 替换remove为delete方法
        reaction.users.delete(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;
        }
        // 调整edit参数结构
        curPage.edit({
            embeds: [pages[page].setFooter({ text: `Page ${page + 1} / ${pages.length}` })]
        });
    });
    reactionCollector.on("end", () => {
        if (!curPage.deleted) {
            curPage.reactions.removeAll();
        }
    });
    return curPage;
};
module.exports = paginationEmbed;

内容的提问来源于stack exchange,提问作者D4RKEZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:24:03