【问题标题】:Throwing an error when trying to send a embed尝试发送嵌入时抛出错误
【发布时间】:2021-11-25 10:43:54
【问题描述】:

我正在尝试使用 discord.js v12 创建嵌入,但它一直显示此错误

DiscordAPIError: 无法发送空消息

这是我的代码:

        const infoembed = new MessageEmbed()
            .setColor('#0099ff')
            .setTitle(responce.asset.title)
            
        umsg.channel.send({ embeds: infoembed });

【问题讨论】:

    标签: javascript discord discord.js bots embed


    【解决方案1】:

    如果 responce.asset.title 为空 - 您将收到错误消息,因为 discord 无法发送带有空标题的嵌入!但是您可以尝试使用此代码:

    const infoembed = new MessageEmbed()
          .setColor('#0099ff')
          .setTitle(`** **`);
    
    umsg.channel.send(infoembed)
    

    【讨论】:

    • 它实际起作用的有趣之处
    • message.channel.send(infoembed) 不是发送嵌入的正确方式
    • 这不是最好的方法,但如果它有效,我看不出有理由拒绝它,而你的代码仍然给他们一个错误
    • 这不是编码方式:D 它不应该是“只要它以某种方式工作就可以”。特别是如果您是编程新手,了解代码并以正确的方式进行操作非常重要
    • @MegaMix_Craft 它可能在一种情况下工作,但不是另一种情况。一个例子是乘以 2。如果你有数字 2,你可以加 2。你得到了正确的结果,但是 得到它的方法是错误的。这不一定是 正确的 方式,但它显然不适用于任何其他数字,例如 6. 6*2 = 12 但 6+2 = 8。
    【解决方案2】:

    如果您使用的是 discord.js v13,则必须将嵌入放入 数组

    const infoembed = new MessageEmbed()
                .setColor('#0099ff')
                .setTitle(responce.asset.title)
                
    umsg.channel.send({ embeds: [infoembed] });
    

    如果您想在消息中添加一些文本内容,您只需添加字段content

    const infoembed = new MessageEmbed()
                .setColor('#0099ff')
                .setTitle(responce.asset.title)
                
    umsg.channel.send({ content: 'Hello world!', embeds: [infoembed] });
    

    由于您使用的是 discord.js v12,因此您必须删除 大括号embeds 字段:

    const infoembed = new MessageEmbed()
                .setColor('#0099ff')
                .setTitle(responce.asset.title)
                
    umsg.channel.send(infoembed);
    

    【讨论】:

    • umsg.channel.send({ embeds: [infoembed] });仍然返回相同的错误
    • responce 是您的实际变量还是拼写错误?
    • 这是我的实际变量,对不起,我有阅读障碍
    • 并且必须已经调试过responce.asset.title 来检查它是null 还是
    • 尝试用.setTitle("Test")替换.setTitle(responce.asset.title)
    【解决方案3】:

    机器人发送的所有消息现在最多支持 10 个嵌入。因此,embed 选项被移除并替换为embeds 数组,该数组必须在options 对象中。

    umsg.channel.send({ embeds: [infoembed] });
    

    Read documentation

    【讨论】:

    • umsg.channel.send({ embeds: [infoembed] });仍然返回相同的错误
    猜你喜欢
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2017-02-18
    • 2014-03-22
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多