如何修复 MissingPermissions 错误不起作用 | discord.py

How to fix MissingPermissions error not working | discord.py

我设置了一个 *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 命令?

问题是我试图用管理员(不是 gunna 工作)禁止某人。

但是,如果机器人无法禁止此人,我可能会添加错误:

try:
    await member.ban() # member: discord.Member
except discord.Forbidden: # the error being raised
    await ctx.send(f"I don't have permission to ban **{member}**")

这确保了机器人实际上可以禁止被提及的用户(测试和工作)