【问题标题】:Trying to do an error message of missing required permission for discord bot on python尝试在 python 上执行缺少 discord bot 所需权限的错误消息
【发布时间】:2021-03-14 19:59:14
【问题描述】:

我正在 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'

我该如何解决?还有其他方法吗?

【问题讨论】:

    标签: python discord.py


    【解决方案1】:

    你需要检查错误是否是commands.MissingRequiredArgument的实例

    看到错误我认为你不在 cog 中,所以删除 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
    

    【讨论】:

    • 它只有在我没有给出任何论据时才有效,当我作为@everyone 试图踢某人时,它会打印到控制台我没有权限,他没有在 Discord 中说出来。
    • 检查if isinstance(error, commands.CheckFailure):
    • if isinstance(error, commands.CheckFailure): 上替换if isinstance(error, commands.MissingPermissions):,对吗?如果是,那仍然无法正常工作
    猜你喜欢
    • 2018-05-14
    • 2016-12-23
    • 1970-01-01
    • 2021-11-18
    • 2021-09-30
    • 2021-06-02
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多