【问题标题】:How to fix MissingPermissions error not working | discord.py如何修复 MissingPermissions 错误不起作用 |不和谐.py
【发布时间】: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


【解决方案1】:

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

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

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}**")

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

【讨论】:

    猜你喜欢
    • 2019-11-05
    • 2018-07-06
    • 2021-09-27
    • 2022-01-04
    • 2021-10-31
    • 2021-04-27
    • 2018-08-06
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多