![](/img/trans.png)
[英](node:26) UnhandledPromiseRejectionWarning: RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values may not be empty
[英]RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings
所以我目前正在嘗試將我的 Discord 機器人從 V12 更新到 V13,但我目前遇到了一個非常令人沮喪的問題。 所以本質上,我正在創建一種事件命令,人們可以在其中做出反應來參加,每次有人做出反應時,嵌入編輯本身以及問題所在。 那么我是如何做到的 V12 是我通過更新值的函數編輯了消息。
message.edit({
embeds: [
await updateEmbed(
embedPref,
users[0],
users[1],
users[2],
displayText[0],
displayText[1],
displayText[2],
displayText[3]
),
],
});
由於錯誤的性質,我認為這不是問題的根源。 這是用於更新嵌入的代碼:
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 字段值必須是非空字符串。
編輯:所以我發現了問題,顯然你不能再將數組作為字段的值了。 這解釋了為什么這不起作用。
根據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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.