首页 > 解决方案 > 聊天清除无权限复出消息不起作用

问题描述

我编写了一个机器人,机器人有一个 !clear 功能,代码是

@client.command()
@commands.has_permissions(manage_messages=True)
async def clear(ctx, amount=5):
    await ctx.channel.purge(limit=amount)
    print(f'5 Messages has been deleted!')

@clear.error
async def clear_error(error, ctx):
    if isinstance(error, CheckFailure):
        time.sleep(0.5)
        print("No Permission!")
        await ctx.send(f'You have no permission!')

问题是,当用户无权执行此操作时,等待 ctx.send 将无法说您没有权限!在这个地方等待 ctx.send 是错误的还是其他什么?

标签: pythondiscord.py

解决方案


你只需要交换参数的位置。第一个参数必须是ctx,第二个参数是error

@clear.error
async def clear_error(ctx, error):
    if isinstance(error, CheckFailure):
        time.sleep(0.5)
        print("No Permission!")
        await ctx.send(f'You have no permission!')

推荐阅读