Discord.js嵌入问题

时间:2019-02-01 22:46:44

标签: javascript discord discord.js

尝试发送嵌入崩溃和注销,错误:

“ 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);
    }
}

这应该只是顺利开机,因为它的做法,但不会崩溃...

2 个答案:

答案 0 :(得分:0)

您还记得const Discord = require('discord.js')吗?

答案 1 :(得分:0)

该问题很可能是o.contentn.content为空。当更改消息并删除/添加内容时,这是很自然的。

一种处理此问题的方法是,不尝试添加字段 if 实际内容是否为空,而另一种方法是在可能为空的字段前添加零宽度的空格,例如做\u200b${n.content}的例子。

请注意,on可以存在并且可以为非空,而o.contentn.content仍然为空。