所以我有一个机器人,它有一些命令,机器人需要禁止权限和管理频道权限等。当用户尝试时,我如何让机器人说“我无权这样做”发出机器人无法执行的命令。例如禁止命令,但机器人没有禁止权限。我试过了,但没有用:
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
如果用户尝试执行机器人无法执行的命令,我将如何让机器人说它没有权限。提前致谢。
答案 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!")