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

Discord.js嵌入消息带按钮报错:Cannot send an empty message

Discord机器人发送带按钮嵌入消息时出现DiscordAPIError[50006]错误排查

尝试让Discord机器人检测到特定消息时发送附带按钮的嵌入消息,但持续出现以下错误:
DiscordAPIError[50006]: Cannot send an empty message

已在网上查找解决方案但未找到适配方案,附上代码请求帮忙排查问题。

错误栈信息

throw new DiscordAPIError.DiscordAPIError(data, "code" in data ? data.code : data.error, status, method, url, requestData);
      ^

DiscordAPIError[50006]: Cannot send an empty message

代码示例

const exampleEmbed = {
      color: 0xff0000,
      title: '◄◄ ‼ help request ‼ ►►',
      fields: [
        { name: `user:`, value: `${msg.author}` },
        { name: 'reason:', value: msg.content.slice(3) || 'no reason specified', inline: true }
      ],
      timestamp: new Date().toISOString()
    };

const row = new ActionRowBuilder()
        .addComponents(
            new ButtonBuilder()
                .setCustomId('primary')
                .setLabel('Click me!')
                .setStyle(ButtonStyle.Primary),
        );

const msgData = {
   content : `<@&${StaffRoleID}>`,
    embeds: [ exampleEmbed ],
    components: [ row ],
}
console.log(msgData);
  
await msg.reply({data: msgData});

问题原因及解决方案

  • 问题根源:在Discord.js v14及以上版本中,reply()方法不需要将消息参数嵌套在data字段里。当前写法{data: msgData}会导致Discord API无法识别传入的content、embeds等参数,误以为要发送空消息。
  • 修复方案:直接传递msgData对象给reply()方法,修改最后一行代码:
    await msg.reply(msgData);
    
    或者使用对象展开语法(效果一致):
    await msg.reply({...msgData});
    

修改后,content、嵌入消息和按钮组件都会被正确传递,即可避免空消息错误。

内容的提问来源于stack exchange,提问作者Daniel Ben Ari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:50:23