尝试发送嵌入崩溃和注销,错误:
“ RangeError:RichEmbed字段值不能为空。”
我尝试添加多个检查以查看是否有任何不明原因并引起问题,但似乎没有任何解决方法。
嵌入已被完全发送,但最终它会损坏并使机器人崩溃。
client.on("messageUpdate",(oldMsg,newMsg) =>{
if(newMsg.author.bot && !newMsg.guild){return}
//console.log(oldMsg.content,newMsg.content)
messageEditEmbed(oldMsg,newMsg);
})
function messageEditEmbed(o,n){
let channel = o.guild.channels.find(channel => channel.name === "logs");
if(channel){
let embed = new discord.RichEmbed()
.setDescription(`***A message was edited by ${o.author} in ${o.channel}*** `)
if(o){embed.addField("Before: ",o.content)}
if(n){embed.addField("After: ",n.content)}
channel.send(embed);
}
}
这应该只是顺利开机,因为它的做法,但不会崩溃...
答案 0 :(得分:0)
您还记得const Discord = require('discord.js')
吗?
答案 1 :(得分:0)
该问题很可能是o.content
或n.content
为空。当更改消息并删除/添加内容时,这是很自然的。
一种处理此问题的方法是,不尝试添加字段 if 实际内容是否为空,而另一种方法是在可能为空的字段前添加零宽度的空格,例如做\u200b${n.content}
的例子。
请注意,o
和n
可以存在并且可以为非空,而o.content
和n.content
仍然为空。