承诺中无法抓住UnhandledPromiseRejectionWarning

所以我试图抓住我的承诺UnhandledPromiseRejectionWarning,但由于某种原因,这是行不通的。 它忽略了我的代码,只是输出错误到控制台。

错误:

UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):错误:禁止(不能发送消息给此用户)

码:

e.message.author.openDM().then((message) => { message.sendMessage(`test`); }).catch((error) => { e.message.channel.sendMessage(error + "test"); }); 

这是一个不和谐的机器人,使用discordie。 在我看来,上面的代码应该通过私人信息发送一个消息作者的单词“testing”,如果僵尸不能,它会发送错误和单词testing在他们发送消息的渠道。但是,第二部分(在catch中)不会被执行。
tl; dr,在上面的代码捕获不起作用,我得到上述错误在控制台,而不是如果机器人没有权限,以防止用户。

你忘记了函数里面的return语句。 我想message.sendMessage('test')返回承诺

 e.message.author.openDM().then((message) => { return message.sendMessage(`test`); }).catch((error) => { e.message.channel.sendMessage(error + "test"); });