首页 > 解决方案 > Discord.py 重写角色层次结构检查

问题描述

我在 discord.py rewrite 中写了一个机器人。到目前为止,它只有 !kick、!ban 和 !unban 等基本选项。但是,当前设置为具有适当权限的任何人都可以对任何人执行此操作。这意味着具有“版主”级别的人可以禁止具有“管理员”级别的人,这是不允许的。我如何添加一个简单的检查来查看该人的排名是否高于/低于他们试图踢/禁止的人?

标签: url-rewritingdiscorddiscord.pyroles

解决方案


Member对象有一个top_role属性,你可以直接比较角色(更高的角色“更大”):

@bot.command()
async def ban(ctx, target: Member):
    if target.top_role >= ctx.author.top_role:
        await ctx.send("You can only ban people below you")
        return
    ...

推荐阅读