2017-10-04 12 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を使用して、不和ボットです。私の考えでは、上記のコードはメッセージ作成者に「test」という単語をプライベートメッセージで送信する必要があります。ボットできない場合はメッセージを送信したチャネルでエラーと単語テストを送信します。 2番目の部分(キャッチ内)は実行されません。
tl; dr上記のコードのキャッチが機能していないため、ボットにユーザーを追加する権限がない場合は、コンソールで上記のエラーが表示されます。

答えて

3

returnステートメント内部thenの機能が忘れています。 私はmessage.sendMessage('test')が約束を返すと考えます。

e.message.author.openDM().then((message) => { 
    return message.sendMessage(`test`); 
}).catch((error) => { 
    e.message.channel.sendMessage(error + "test"); 
}); 
関連する問題