如何忽略Discord.JS 中的所有機器人權限錯誤?我已經有了檢查機器人的權限功能,但是這個功能對頻道權限不起作用。您可以回答我如何忽略所有機器人的權限錯誤(如果可以)或如何在通道權限中檢查權限。有我的錯誤(與不檢查權限相同):
throw new DiscordAPIError(data, res.status, request);
^
DiscordAPIError: Missing Permissions
uj5u.com熱心網友回復:
您可以通過多種方式解決此問題
- 將其包裝在 try/catch 陳述句中
這看起來像:
try{
// Do this
} catch (error) {
// Do that
}
- 您可以使用 .catch() 函式
role.doSomething().catch((error) => {
// Do that
})
如果您想查看錯誤代碼是否是由于缺少權限引起的,您可以執行以下操作:
const { Constants } = require("discord.js")
try{
// Do this
} catch (error) {
// Do that
if(error.code === Constants.APIErrors.MISSING_PERMISSIONS){
// Do this and that
}
}
uj5u.com熱心網友回復:
可以通過GuildMember#permissions查看客戶端在公會中是否有一定的權限。
// Example
const botMember = message.guild.me;
if (!botMember.permissions.has('KICK_MEMBERS')) {
// Code
} else {
// Error Handling
}
此外,您可以使用GuildMember#permissionsIn()來檢查某個頻道的客戶端權限
const botMember = message.guild.me;
if (!botMember.permissionsIn(CHANNEL).has('permission')) {
// Code
} else {
// Error Handling
}
如其他答案所示,您還可以使用.catch()或處理承諾拒絕catch () {}
確保您await在使用時使用任何承諾功能async/await try/catch
// Example
try {
await message.channel.send(...);
} catch (err) {
// Handle err
}
message.channel.send(...)
.then(msg => {})
.catch(err => {
// Handle err
});
uj5u.com熱心網友回復:
您可以嘗試例外處理,如果您只是希望機器人繼續運行而不使其崩潰。
我建議至少在控制臺中記錄錯誤。對于本示例,我將使用 try/catch 塊。
try{
await doSomethingThatRequiresPermissions();
}catch(error){
console.log("Error: " error " at doSomethingThatRequiresPermissions");
}
NodeJS 錯誤處理檔案
Discord.js 特定權限處理
編輯:我目前無法訪問我的服務器(因為我在作業),但我稍后會對此進行測驗以找到更全面的答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/390880.html
上一篇:CastError:CasttoObjectId因值“ObjectId(610f16a6ba0d5fc2d4593093)”而失敗
