错误:MessageEmbed字段值不能为空

时间:2020-07-26 21:18:50

标签: discord.js

所以我有一段代码,旨在在消息更新时将包含新旧消息的嵌入发送到日志记录通道。但是,每当我测试代码时,嵌入都会成功发送,但是会发生错误 $.imageSelectAreas.prototype.newArea = function (event) { var id = -1; this.blurAll(); if (this.options.maxAreas && this.options.maxAreas <= this.areas().length) { return id; } this._eachArea(function (area, index) { id = Math.max(id, parseInt(index, 10)); }); id += 1; this._areas[id] = $.imageArea(this, id); if (event) { this._areas[id].startSelection(event); } return id; }; $.imageSelectAreas.prototype.set = function (id, options, silent) { if (this._areas[id]) { options.id = id; this._areas[id].set(options, silent); this._areas[id].focus(); } }; ,并且机器人会崩溃。我找不到发生此错误的原因,因为所有字段都返回我指定的值。

我唯一奇怪的是,当我将代码添加到bot中时,所有嵌入都开始遇到相同的错误,但是当我注释掉代码后,嵌入恢复了正常状态。

有人知道为什么会发生此错误吗?如果是这样,我该如何解决?

这是代码:

RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values may not be empty

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

我认为这段代码是正确的: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);