错误:MessageEmbed 字段值可能不为空

Posted

技术标签:

【中文标题】错误:MessageEmbed 字段值可能不为空【英文标题】:Error: MessageEmbed field values may not be empty 【发布时间】:2020-11-16 05:19:33 【问题描述】:

所以我有一段代码,旨在每当更新消息时将嵌入与旧消息和新消息一起发送到日志记录通道。但是,每当我测试代码时,嵌入都会成功发送,但会出现错误RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values may not be empty,并且机器人会崩溃。我找不到发生此错误的原因,因为所有字段都返回我指定的值。

我注意到唯一奇怪的是当我将代码添加到机器人时,所有嵌入开始遇到相同的错误,但是当我注释掉代码时,嵌入恢复正常。

有谁知道为什么会出现这个错误?如果是这样,我将如何解决它?

这是代码:

    var channel = newMessage.guild.channels.cache.find(ch => ch.name === 'bot-log');
    var log = new MessageEmbed()
    .setAuthor(oldMessage.author.tag, oldMessage.author.displayAvatarURL())
    .setDescription(`:pencil: **[Message]($newMessage.url) by $newMessage.author was edited in <#$oldMessage.channel.id>**`)
    .setColor(0x686afd)
    .addFields(
         name: `Old message`, value: oldMessage.content,
         name: `New message`, value: newMessage.content,
    )
    .setTimestamp()
    .setFooter(`Message ID: $newMessage.id`);
    return channel.send(log);
);

【问题讨论】:

如有必要,我可以提供完整的错误信息 【参考方案1】:

这是因为消息内容可以是空的,例如用户附加一些没有文本的文件。您可以检查 newMessage.content.length 和 oldMessage.content.length,并将其更改为您想要的任何内容。

喜欢:

newMessage.content = newMessage.content.length > 0 ? newMessage.content : 'empty message'
oldMessage.content = oldMessage.content.length > 0 ? oldMessage.content : 'empty message'

【讨论】:

【参考方案2】:

我认为这个代码是正确的:v

    var channel = message.channel;
    var log = new MessageEmbed()
    .setAuthor(message.author.tag, message.author.displayAvatarURL())
    .setDescription(`:pencil: **[Message]($message.url) by $message.author.tag was edited in <#$message.channel.id>**`)
    .setColor(0x686afd)
    .addFields(
         name: `Old message`, value: message.content,
         name: `New message`, value: message.content,
    )
    .setTimestamp()
    .setFooter(`Message ID: $message.id`);
    return channel.send(log);

【讨论】:

以上是关于错误:MessageEmbed 字段值可能不为空的主要内容,如果未能解决你的问题,请参考以下文章

discord.js 中的“MessageEmbed 字段值可能不为空”问题

“MessageEmbed 字段值不能为空” discord.js

MessageEmbed 字段值不能为空

Discord.js v12 禁止命令 - UnhandledPromiseRejectionWarning: RangeError [EMBED_FIELD_VALUE]: MessageEmbed

检查字段是否存在并且不为空

如果特定字段不为空,mysql将值设置为空