【问题标题】:RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty stringsRangeError [EMBED_FIELD_VALUE]:MessageEmbed 字段值必须是非空字符串
【发布时间】:2021-12-04 18:17:50
【问题描述】:

所以我目前正在尝试将我的 Discord 机器人从 V12 更新到 V13,我目前遇到了一个非常令人沮丧的问题。因此,基本上我正在创建一种事件命令,人们可以在其中做出反应以参加,每次有人对嵌入编辑本身和问题所在做出反应时。那么我是如何做到的 V12 是我通过更新值的函数编辑了消息。

message.edit({
    embeds: [
        await updateEmbed(
            embedPref,
            users[0],
            users[1],
            users[2],
            displayText[0],
            displayText[1],
            displayText[2],
            displayText[3]
        ),
    ],
});

由于错误的性质,我认为这不是问题的根源。这是Embeds更新的代码:

function updateEmbed(option, users1, users2, users3, ...displayText) {
const upatedDndEmbed = new Discord.MessageEmbed()
    .setTitle(`**D&D** at ${displayTime}`)
    .setThumbnail("https://i.imgur.com/u0aN19t.png")
    .setDescription(displayText[0])
    .setColor("DC143C")
    .addFields(
        { name: "\u200B", value: "\u200B" },
        { name: "Campaign:", value: `${displayText[1]}`, inline: true },
        { name: "DM:", value: `${displayText[2]}`, inline: true },
        { name: "Whereabout:", value: `${displayText[3]}`, inline: true },
        { name: "\u200B", value: "\u200B" },
        {
            name: `<:accepted:867150417271324672>Accepted (${users1.length}/${memberCount})`,
            value: users1.length !== 0 ? users1 : "-",
            inline: true,
        },
        {
            name: `<:unsure:867150452423131166>Unsure (${users2.length}/${memberCount})`,
            value: users2.length !== 0 ? users2 : "-",
            inline: true,
        },
        {
            name: `<:denied:867150431612436510>Denied (${users3.length}/${memberCount})`,
            value: users3.length !== 0 ? users3 : "-",
            inline: true,
        }
    )
    .setFooter(`This message was issued by ${msgSender}`)
    .setTimestamp(new Date());

console.log("I got here 2 ");

const upatedGameEventEmbed = new Discord.MessageEmbed()
    .setTitle(`**Game Event** at ${displayTime}`)
    .setThumbnail(
        "https://cdn.discordapp.com/attachments/836600699080671262/855459529763323914/The_Chill_Pill.png"
    )
    .setDescription(displayText[0])
    .setColor("DC143C")
    .addFields(
        { name: "\u200B", value: "\u200B" },
        { name: "Game:", value: `${displayText[1]}`, inline: true },
        { name: "Additional Notes:", value: `${displayText[2]}`, inline: true },
        { name: "\u200B", value: "\u200B" },
        {
            name: `<:accepted:867150417271324672>Accepted (${users1.length}/${memberCount})`,
            value: users1.length !== 0 ? users1 : "-",
            inline: true,
        },
        {
            name: `<:unsure:867150452423131166>Unsure (${users2.length}/${memberCount})`,
            value: users2.length !== 0 ? users2 : "-",
            inline: true,
        },
        {
            name: `<:denied:867150431612436510>Denied (${users3.length}/${memberCount})`,
            value: users3.length !== 0 ? users3 : "-",
            inline: true,
        }
    )
    .setFooter(`This message was issued by ${msgSender}`)
    .setTimestamp(new Date());

const upatedEventEmbed = new Discord.MessageEmbed()
    .setTitle(`**Event** at ${displayTime}`)
    .setThumbnail(
        "https://cdn.discordapp.com/attachments/836600699080671262/855459529763323914/The_Chill_Pill.png"
    )
    .setDescription(displayText[0])
    .setColor("DC143C")
    .addFields(
        { name: "\u200B", value: "\u200B" },
        { name: "Event:", value: `${displayText[1]}`, inline: true },
        { name: "Additional Notes:", value: `${displayText[2]}`, inline: true },
        { name: "\u200B", value: "\u200B" },
        {
            name: `<:accepted:867150417271324672>Accepted (${users1.length}/${memberCount})`,
            value: users1.length !== 0 ? users1 : "-",
            inline: true,
        },
        {
            name: `<:unsure:867150452423131166>Unsure (${users2.length}/${memberCount})`,
            value: users2.length !== 0 ? users2 : "-",
            inline: true,
        },
        {
            name: `<:denied:867150431612436510>Denied (${users3.length}/${memberCount})`,
            value: users3.length !== 0 ? users3 : "-",
            inline: true,
        }
    )
    .setFooter(`This message was issued by ${msgSender}`)
    .setTimestamp(new Date());

return option === 1 ? upatedDndEmbed : option === 2 ? upatedGameEventEmbed : upatedEventEmbed;

}

这段代码在 V12 中运行良好,但现在返回错误:

RangeError [EMBED_FIELD_VALUE]:MessageEmbed 字段值必须是 非空字符串。

编辑:所以我发现了问题,显然你不能将数组作为字段的值。这就解释了为什么这不起作用。

【问题讨论】:

    标签: node.js discord.js


    【解决方案1】:

    尝试替换您设置的值

    users1.length !== 0 ? users1 : "-"
    

    users1 || "-"
    

    也许users1array,也许users1.length 正在返回你undefinednull 而不是0,所以使用它自己看看,如果它仍然不起作用,之前创建嵌入使用

    console.log([users1,users2,users3,displayText...])
    

    确定这些变量到底是什么。

    【讨论】:

    • 所以我已经检查过了。当我 console.log(users1.length !== 0 ? users1 : "-") 并且数组为空时,它总是返回“-”。我真的很困惑这完全有效的 V12
    • @KraftaN 只需执行 console.log(users1) 并告诉您看到了什么
    【解决方案2】:

    根据https://discordjs.guide/additional-info/changes-in-v13.html#strings 需要通过方法.toString() 或模板文字进行验证。我的代码没有。所以为了解决这个问题,我在所有用户数组之后添加了.join("\n")。这实质上是用换行符分割数组中的所有元素。固定代码:

        function updateEmbed(option, users1, users2, users3, ...displayText) {
            const users1Length = users1.length;
            const users2Length = users2.length;
            const users3Length = users3.length;
    
            const updatedDndEmbed = new Discord.MessageEmbed()
                .setTitle(`**D&D** at ${displayTime}`)
                .setThumbnail("https://i.imgur.com/u0aN19t.png")
                .setDescription(displayText[0])
                .setColor("DC143C")
                .addFields(
                    { name: "\u200B", value: "\u200B" },
                    { name: "Campaign:", value: `${displayText[1]}`, inline: true },
                    { name: "DM:", value: `${displayText[2]}`, inline: true },
                    { name: "Whereabout:", value: `${displayText[3]}`, inline: true },
                    { name: "\u200B", value: "\u200B" },
                    {
                        name: `<:accepted:867150417271324672>Accepted (${users1Length}/${memberCount})`,
                        value: users1Length !== 0 ? users1.join("\n") : "-",
                        inline: true,
                    },
                    {
                        name: `<:unsure:867150452423131166>Unsure (${users2Length}/${memberCount})`,
                        value: users2Length !== 0 ? users2.join("\n") : "-",
                        inline: true,
                    },
                    {
                        name: `<:denied:867150431612436510>Denied (${users3Length}/${memberCount})`,
                        value: users3Length !== 0 ? users3.join("\n") : "-",
                        inline: true,
                    }
                )
                .setFooter(`This message was issued by ${msgSender}`)
                .setTimestamp(new Date());
    
            const updatedGameEventEmbed = new Discord.MessageEmbed()
                .setTitle(`**Game Event** at ${displayTime}`)
                .setThumbnail(
                    "https://cdn.discordapp.com/attachments/836600699080671262/855459529763323914/The_Chill_Pill.png"
                )
                .setDescription(displayText[0])
                .setColor("DC143C")
                .addFields(
                    { name: "\u200B", value: "\u200B" },
                    { name: "Game:", value: `${displayText[1]}`, inline: true },
                    { name: "Additional Notes:", value: `${displayText[2]}`, inline: true },
                    { name: "\u200B", value: "\u200B" },
                    {
                        name: `<:accepted:867150417271324672>Accepted (${users1Length}/${memberCount})`,
                        value: users1Length !== 0 ? users1.join("\n") : "-",
                        inline: true,
                    },
                    {
                        name: `<:unsure:867150452423131166>Unsure (${users2Length}/${memberCount})`,
                        value: users2Length !== 0 ? users2.join("\n") : "-",
                        inline: true,
                    },
                    {
                        name: `<:denied:867150431612436510>Denied (${users3Length}/${memberCount})`,
                        value: users3Length !== 0 ? users3.join("\n") : "-",
                        inline: true,
                    }
                )
                .setFooter(`This message was issued by ${msgSender}`)
                .setTimestamp(new Date());
    
            const updatedEventEmbed = new Discord.MessageEmbed()
                .setTitle(`**Event** at ${displayTime}`)
                .setThumbnail(
                    "https://cdn.discordapp.com/attachments/836600699080671262/855459529763323914/The_Chill_Pill.png"
                )
                .setDescription(displayText[0])
                .setColor("DC143C")
                .addFields(
                    { name: "\u200B", value: "\u200B" },
                    { name: "Event:", value: `${displayText[1]}`, inline: true },
                    { name: "Additional Notes:", value: `${displayText[2]}`, inline: true },
                    { name: "\u200B", value: "\u200B" },
                    {
                        name: `<:accepted:867150417271324672>Accepted (${users1Length}/${memberCount})`,
                        value: users1Length !== 0 ? users1.join("\n") : "-",
                        inline: true,
                    },
                    {
                        name: `<:unsure:867150452423131166>Unsure (${users2Length}/${memberCount})`,
                        value: users2Length !== 0 ? users2.join("\n") : "-",
                        inline: true,
                    },
                    {
                        name: `<:denied:867150431612436510>Denied (${users3Length}/${memberCount})`,
                        value: users3Length !== 0 ? users3.join("\n") : "-",
                        inline: true,
                    }
                )
                .setFooter(`This message was issued by ${msgSender}`)
                .setTimestamp(new Date());
    
            return option === 1
                ? updatedDndEmbed
                : option === 2
                ? updatedGameEventEmbed
                : updatedEventEmbed;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-03
      • 2022-01-16
      • 2022-07-15
      • 2021-10-09
      • 1970-01-01
      • 2021-11-23
      • 2021-07-16
      • 2022-08-03
      相关资源
      最近更新 更多