【发布时间】:2019-11-04 14:06:11
【问题描述】:
我设置了一个*ban 命令,它使用@commands.has_permissions(ban_members=True) 装饰器。但是,我的错误处理程序似乎没有接受 if isinstance (error, MissingPermissions):。
@client.command(name="ban", pass_ctx=True)
@commands.has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member=None, *, reason: str=None):
# command is here but irrelevant i think
@ban.error
async def ban_error(ctx, error):
if isinstance(error, BadArgument): # members != @user
await ctx.send("Please specify a **valid** user!")
elif isinstance(error, MissingPermissions): # can't ban
await ctx.send("You need the **ban members** permission")
else:
raise error
它没有被错误处理程序捕获,但我的终端 [vscode] 确实产生了这个:discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden:
403 FORBIDDEN (error code: 50013): Missing Permissions 我认为这是 MissingPermissions 所做的?无论如何,我对为什么这不起作用感到困惑,因此感谢您的帮助:)
还请注意,同样的代码在我的kick 命令上以某种方式工作?
【问题讨论】:
-
错误提到了管理消息权限,而不是禁止成员权限。你确定你使用的是正确的命令吗?你能提供完整的错误信息吗?
-
抱歉。重新运行权限不足的禁令命令,现在得到正确的错误消息:
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden: 403 FORBIDDEN (error code: 50013): Missing Permissions- 没有提及消息或禁令。 -
那么这个问题解决了吗?或者..当前的问题到底是什么?
-
机器人本身似乎没有权限禁止用户。
标签: error-handling discord.py-rewrite