DiscordAPIError:无法使用 Discord 嵌入发送空消息

Posted

技术标签:

【中文标题】DiscordAPIError:无法使用 Discord 嵌入发送空消息【英文标题】:DiscordAPIError: Cannot send an empty message with Discord embed 【发布时间】:2021-12-28 11:41:43 【问题描述】:

我的代码如下:

const  Client, Intents, MessageEmbed, MessageAttachment  = require("discord.js");
const client = new Client( intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] );
client.on("message", function (message) 


    // inside a command, event listener, etc.
    const exampleEmbed = new MessageEmbed()
        .setColor('#0099ff')
        .setTitle('Some title')
        .setURL('https://discord.js.org/')
        .setAuthor('Some name', 'https://i.imgur.com/AfFp7pu.png', 'https://discord.js.org')
        .setDescription('Some description here')
        .setThumbnail('https://i.imgur.com/AfFp7pu.png')
        .addFields(
             name: 'Regular field title', value: 'Some value here' ,
             name: '\u200B', value: '\u200B' ,
             name: 'Inline field title', value: 'Some value here', inline: true ,
             name: 'Inline field title', value: 'Some value here', inline: true ,
        )
        .addField('Inline field title', 'Some value here', true)
        .setImage('https://i.imgur.com/AfFp7pu.png')
        .setTimestamp()
        .setFooter('Some footer text here', 'https://i.imgur.com/AfFp7pu.png');

    message.channel.send( embeds: [exampleEmbed] );
    return;

但它给出了以下错误:

DiscordAPIError: Cannot send an empty message
    at RequestHandler.execute (C:\Users\Federico\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\Federico\node_modules\discord.js\src\rest\RequestHandler.js:39:14) 
  method: 'post',
  path: '/channels/908380877506089000/messages',
  code: 50006,
  httpStatus: 400

它不应该出错,它是原始 Discord.js 文档中的代码:https://discordjs.guide/popular-topics/embeds.html,但确实如此。 我正在运行最新版本的 Discord.JS (13.3.1);和 Node.js v16.9.0。

【问题讨论】:

message.channel.send 正确吗? 是的,因为如果我这样做 message.channel.send("wownero.org test") 它可以工作。 afaik。当您尝试message.channel.send 时,内容必须是字符串,而现在您正在传递一个对象。这导致了错误。 @Kid 不,它接受一个字符串或MessageOptions embeds 是一个属性 你是什么 discord.js 版本?如果您使用 12 发送这样的嵌入是不正确的。尝试通过运行 npm install discord.js@latest 来更新 discord.js 【参考方案1】:

已修复:由于某些原因,npm install discord.js 实际上并未安装第 13 版,而是第 12 版。谢谢@Christoph Blüm!

【讨论】:

【参考方案2】:

我不知道您是如何得到“无法发送空消息”的。 但在 discord.js v13 中,它是 messageCreate 而不是 message。 这对我有用(当你输入“test”时它会发送嵌入):

client.on("messageCreate", message => 

if (message.content === 'test') 
    const exampleEmbed = new Discord.MessageEmbed()
        .setColor('#0099ff')
        .setTitle('Some title')
        .setURL('https://discord.js.org/')
        .setAuthor('Some name', 'https://i.imgur.com/AfFp7pu.png', 'https://discord.js.org')
        .setDescription('Some description here')
        .setThumbnail('https://i.imgur.com/AfFp7pu.png')
        .addFields(
             name: 'Regular field title', value: 'Some value here' ,
             name: '\u200B', value: '\u200B' ,
             name: 'Inline field title', value: 'Some value here', inline: true ,
             name: 'Inline field title', value: 'Some value here', inline: true ,
        )
        .addField('Inline field title', 'Some value here', true)
        .setImage('https://i.imgur.com/AfFp7pu.png')
        .setTimestamp()
        .setFooter('Some footer text here', 'https://i.imgur.com/AfFp7pu.png');

    message.channel.send( embeds: [exampleEmbed] );
   
);

【讨论】:

这不能回答所提出的问题

以上是关于DiscordAPIError:无法使用 Discord 嵌入发送空消息的主要内容,如果未能解决你的问题,请参考以下文章

不和谐机器人的NodeJS错误:UnhandledPromiseRejectionWarning:DiscordAPIError:无法发送空消息

DiscordAPIError:无法发送空消息。但是我可以记录我试图发送到控制台的东西,发送的数据来自 MongoDB

如何隐藏 DiscordAPIError (discord.js) (node.js)

DiscordAPIError:createOverwrite 上缺少访问权限

DiscordAPIError:无效的表单正文 - Discord 斜杠命令

DiscordAPIError:无效的表单正文