如何隐藏 DiscordAPIError (discord.js) (node.js)
Posted
技术标签:
【中文标题】如何隐藏 DiscordAPIError (discord.js) (node.js)【英文标题】:How to hide the DiscordAPIError (discord.js) (node.js) 【发布时间】:2021-09-11 18:59:39 【问题描述】:我正在尝试制作一个 Discord 机器人。 现在我正在尝试删除所有角色命令,但我不喜欢控制台中关于 @everyone 和高于机器人角色的角色的错误。 有什么解决方案可以将消息更改为 role 角色无法删除, 或完全隐藏它?
例子:
DiscordAPIError: Invalid Role
at RequestHandler.execute (D:\SapphireNuker JS\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async RequestHandler.push (D:\SapphireNuker JS\node_modules\discord.js\src\rest\RequestHandler.js:39:14)
method: 'delete',
path: '/guilds/835119368807383091/roles/835119368807383091',
code: 50028,
httpStatus: 400
DiscordAPIError: Missing Permissions
at RequestHandler.execute (D:\SapphireNuker JS\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async RequestHandler.push (D:\SapphireNuker JS\node_modules\discord.js\src\rest\RequestHandler.js:39:14)
method: 'delete',
path: '/guilds/835119368807383091/roles/859000573138305026',
code: 50013,
httpStatus: 403
DiscordAPIError: Missing Permissions
at RequestHandler.execute (D:\SapphireNuker JS\node_modules\discord.js\src\rest\RequestHandler.js:154:13)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async RequestHandler.push (D:\SapphireNuker JS\node_modules\discord.js\src\rest\RequestHandler.js:39:14)
method: 'delete',
path: '/guilds/835119368807383091/roles/859043233375977494',
code: 50013,
httpStatus: 403
我正在使用的代码:
message.guild.roles.cache.forEach(roles =>
roles.delete()
.then(deleted => console.log(`Deleted role $deleted.name`))
.catch(console.error);
【问题讨论】:
与其试图隐藏错误,不如尝试修复它们。 Bot 没有足够的权限。尝试授予您的机器人管理员权限并将其保持在角色层次结构的顶部。 【参考方案1】:您可以使用Promise.catch()
或try/catch
。 try catch 的特点是它不会捕获异步错误。 promise.catch 的做法是这样的:
message.guild.roles.cache.forEach(async roles =>
roles.delete()
.then(deleted => console.log(`Deleted role $deleted.name`))
.catch(console.error);
)
我不明白为什么你的 .catch 之前没有工作,除非你出于某种原因记录它,而且它并没有结束你的节点进程。这是另一种停止错误的方法:
message.guild.roles.cache.forEach(async roles =>
try
await (roles.delete()
.then(deleted => console.log(`Deleted role $deleted.name`)))
catch(err)
console.error(err);
)
不过,最好使用第一个。但是,如果您不希望发生任何错误,只需使用 return
而不是 console.error
【讨论】:
以上是关于如何隐藏 DiscordAPIError (discord.js) (node.js)的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 DiscordAPIError[50001] OAuth2 问题?
DiscordAPIError:createOverwrite 上缺少访问权限