所以我有一段代码,旨在在消息更新时将包含新旧消息的嵌入发送到日志记录通道。但是,每当我测试代码时,嵌入都会成功发送,但是会发生错误 $.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
答案 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);