![](/img/trans.png)
[英]Discord.js v13 error: RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings
[英]Discord.js v13 [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings
const key = `${message.guild.id}|${message.channel.id}|${message.id}`;
if (MESSAGE_CACHE.has(key)) {
const cachedMessage = MESSAGE_CACHE.get(key);
const logChannel = message.guild.channels.cache.get(settings.log_channel);
if (!logChannel) return;
const embed = new MessageEmbed()
.setAuthor("Ghost ping detected")
.setDescription(
`**Message**:
${cachedMessage.content}
**Author:** ${cachedMessage.author.tag} \`${cachedMessage.author.id}\`
**Channel:** <#${cachedMessage.channelId}>
`
)
.addField("Members", cachedMessage.mentions.members, true)
.addField("Roles", cachedMessage.mentions.roles, true)
.addField("Everyone?", cachedMessage.mentions.everyone, true)
.setFooter("Sent at: " + cachedMessage.createdAt);
sendMessage(logChannel, { embeds: [embed] });
}
如果我刪除一條消息,其中包含幽靈 ping,它會返回錯誤Unhandled Rejection at: RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.
知道為什么會發生這種情況,因為這些字段具有值
你放在那里的所有值都不是字符串,所以它會拋出那個錯誤。 另請注意, .mentions.members
和.mentions.roles
是Collection
,而不是 arrays,因此您需要轉換它們。
.addField("Members", `${Array.from(cachedMessage.mentions.members.values()).join(", ") || "None"}`, true)
.addField("Roles", `${Array.from(cachedMessage.mentions.roles.values()).join(", ") || "None"}`, true)
.addField("Everyone?", `${cachedMessage.mentions.everyone}`, true)
.setFooter("Sent at: " + `${cachedMessage.createdAt}`);
在.addField
創建錯誤,以防止此錯誤,
.addField("Members", `${cachedMessage.mentions.members || "Your word"}`, true)
.addField("Roles", `${cachedMessage.mentions.roles || "Your word"}`, true)
.addField("Everyone?", `${cachedMessage.mentions.everyone || "Your word"}`, true)
.setFooter("Sent at: " + cachedMessage.createdAt);
解釋:如果你的機器人沒有得到任何對某人執行 ping 命令的成員,它不會拋出錯誤,而是發送一個string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.