所以我试图在我的承诺中捕获UnhandledPromiseRejectionWarning,但由于某种原因它不起作用。它忽略了我的代码,只是将错误输出到控制台。
错误:
UnhandledPromiseRejectionWarning:未处理的承诺拒绝 (拒绝ID:1):错误:禁止(无法向此发送消息 用户)
代码:
e.message.author.openDM().then((message) => {
message.sendMessage(`test`);
}).catch((error) => {
e.message.channel.sendMessage(error + "test");
});
这是一个使用discordie的不和谐机器人。在我看来,上面的代码应该通过私人消息向消息作者发送单词“test”,如果机器人不能,它会在他们发送消息的频道中发送错误和单词test。但是,第二部分(在捕获内部)没有被执行 tl; dr,上面代码中的catch不起作用,如果机器人没有dm用户的权限,我会在控制台中收到上述错误。
答案 0 :(得分:4)
您忘记了return
函数中的then
语句。
我想message.sendMessage('test')
会返回一个承诺
e.message.author.openDM().then((message) => {
return message.sendMessage(`test`);
}).catch((error) => {
e.message.channel.sendMessage(error + "test");
});