首页 > 解决方案 > 尝试在 python 上执行缺少 discord bot 所需权限的错误消息

问题描述

我正在 python 上制作一个不和谐的机器人,我不希望普通用户使用审核命令。我知道如何检查权限, @commands.has_permissions(kick_members=True)但我不知道如何处理缺少所需权限的错误消息。我试过了:

@kick.error
async def kick_error(self, ctx, error):
    if isinstance(error, commands.MissingPermissions):
        await ctx.send(':redTick: You don\'t have permission to kick members.')

我在 Stack Overflow 上发现了

但是在cmd中它说: discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: kick_error() missing 1 required positional argument: 'error'

如果我交换'ctx'和'error',就像,它说的是同样的事情,只是他写async def kick_error(self, error, ctx):的不是missing 1 required positional argument: 'error'missing 1 required positional argument: 'ctx'

我该如何解决?还有另一种方法吗?

标签: pythondiscord.py

解决方案


您需要检查错误是否是commands.MissingRequiredArgument

看到错误我认为您不在齿轮中,因此请删除self

@kick.error
async def kick_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
        await ctx.send(':redTick: You don\'t have permission to kick members.')
    elif isinstance(error, commands.MissingRequiredArgument):
        await ctx.send("Missing Argument")
    else: raise(error) # for other errors so they dont get suppressed

推荐阅读