[英]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.