如何处理没有权限错误不和谐的机器人

时间:2021-03-26 16:34:59

标签: python discord.py

所以我有一个机器人,它有一些命令,机器人需要禁止权限和管理频道权限等。当用户尝试时,我如何让机器人说“我无权这样做”发出机器人无法执行的命令。例如禁止命令,但机器人没有禁止权限。我试过了,但没有用:

if isinstance(error, commands.BotMissingPermissions):
   await ctx.send("I dont have the permission to do that!")
   return

但它不起作用。错误是:

Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

如果用户尝试执行机器人无法执行的命令,我将如何让机器人说它没有权限。提前致谢。

1 个答案:

答案 0 :(得分:0)

discord.Forbidden 不是您通常在错误处理程序中处理的错误,您必须在命令本身中使用 try/except 块

async def foo(ctx):
    try:
        ...
    except discord.Forbidden:
        return await ctx.send("I dont have the permission to do that!")

但是可以在错误处理程序中处理它

# If an error happens inside the command,
# discord.py wraps it around with `commands.CommandInvokeError` 
# which has the `original` attribute which is the "original" error
error = getattr(error, "original", error) 
if isinstance(error, discord.Forbidden):
    return await ctx.send("I dont have the permission to do that!")