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

Discord.js v13运行指令触发DiscordAPIError空消息报错如何解决

问题原因及解决方法

Discord.js v13 针对 Embed 构造、消息收发逻辑做了多处破坏性更新,你遇到的DiscordAPIError: Cannot send an empty message错误可按以下优先级排查修复:

  • 补全 Discord 模块导入
    你提供的-help指令代码中直接调用了Discord.MessageEmbed构造实例,但文件开头没有引入discord.js模块,会导致Embed构造失败变为undefined,发送时无有效内容触发空消息报错,在文件顶部补充导入即可:
const Discord = require('discord.js')
  • 修正setFooter写法
    v13 中MessageEmbed.setFooter不再支持直接传入文本参数,必须使用对象格式传参,原代码的写法会导致Embed构造失效,将对应代码修改为:
.setFooter({ text: `Demandé par ${message.author.tag}` })

如果需要附带用户头像作为footer图标,可补充iconURL字段:

.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
  • 确认客户端初始化已声明必要权限意图
    v13 强制要求显式声明机器人需要的权限意图,若初始化时未开启对应权限会导致消息收发异常,检查主文件中客户端初始化代码是否符合规范:
const { Client, Intents } = require('discord.js');
const client = new Client({
  intents: [
    Intents.FLAGS.GUILDS, // 服务器基础权限,必选
    Intents.FLAGS.GUILD_MESSAGES, // 服务器消息收发权限,必选
    // 其他业务所需权限可按需添加
  ]
});
  • 开启开发者面板的Message Content Intent
    登录Discord开发者门户,进入对应机器人应用的设置页,在「Bot」选项卡的「Privileged Gateway Intents」分区,开启Message Content Intent开关,否则机器人无法读取消息内容触发前缀指令,也会引发消息发送异常。

如果修改后仍有问题,可临时在发送参数中添加content字段测试:message.reply({ content: '测试内容', embeds: [HelpEmbed] }),若能正常发送文本但无Embed,说明Embed构造逻辑仍有异常,可打印HelpEmbed实例排查具体字段问题。

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

相关产品推荐
方舟 Agent Plan

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

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