2017-10-04 80 views
1

不能抓住UnhandledPromiseRejectionWarning所以我試圖抓住我的承諾UnhandledPromiseRejectionWarning,但由於某種原因,它不工作。它忽略我的代碼,只是輸出錯誤到控制檯。在承諾

錯誤:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Forbidden (Cannot send messages to this user)

代碼:

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

這是一個不和諧機器人,使用discordie。在我看來,上面的代碼應該通過私人消息向消息作者發送單詞「測試」,如果殭屍不能,它會在他們發送消息的通道中發送錯誤和單詞測試。但是,第二部分(在catch中)不會被執行。
tl; dr,上面代碼中的catch不起作用,我在控制檯中得到了上述錯誤,而如果bot沒有dm用戶的權限。

回答

3

忘記returnthen函數內的函數。 我想message.sendMessage('test')退貨承諾

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