簡體   English   中英

在 discord.js 中處理將 DM 發送給用戶的錯誤

[英]Handle error sending DM to users in discord.js

例如,我想從數組向用戶發送直接消息。 Discord 不允許我為某些用戶發送消息,我想處理錯誤並繼續發送消息。 但是我遇到錯誤並且機器人每次都停止。 我可以使用一些幫助嗎?

 for (let i = 0; i < arrayOfUsersIDs.length; i++) { const element = arrayOfUsersIDs[i] const user = client.users.cache.get(element) try { user.send('My Message') } catch (error) { console.log(error) } }

我收到此錯誤:

 DiscordAPIError: Cannot send messages to this user at RequestHandler.execute (C:\\Users\\Thetr\\Desktop\\tour\\node_modules\\discord.js\\src\\rest\\RequestHandler.js:154:13) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async RequestHandler.push (C:\\Users\\Thetr\\Desktop\\tour\\node_modules\\discord.js\\src\\rest\\RequestHandler.js:39:14) { method: 'post', path: '/channels/861307827499040778/messages', code: 50007, httpStatus: 403 }

這是因為它發送失敗是一個異步錯誤。 您必須添加await以便它可以處理錯誤。

for (let i = 0; i < arrayOfUsersIDs.length; i++) {
    const element = arrayOfUsersIDs[i]
    const user = client.users.cache.get(element)
(async () => {
    try {

       await user.send('My Message')
    }
    catch (error) {
        console.log(error)
    }

})
}

此外,由於它一個承諾,您可以使用.catch()處理它。

user.send('My Message').catch(console.log);

使用異步函數解決它:

 async function sendDM (user, messageContent) { try { await user.send(messageContent) return true } catch (error) { return false } } // In my command for (const element of arrayOfUsersIDs) { const user = client.users.cache.get(element) sendDM(user, 'My Message').then(result => { console.log(result) // true or false }) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM