diff options
| -rw-r--r-- | bot/cogs/moderation.py | 13 | 
1 files changed, 13 insertions, 0 deletions
diff --git a/bot/cogs/moderation.py b/bot/cogs/moderation.py index ac08d3dd4..a15a1b71c 100644 --- a/bot/cogs/moderation.py +++ b/bot/cogs/moderation.py @@ -1207,6 +1207,19 @@ class Moderation(Scheduler):              if User in error.converters:                  await ctx.send(str(error.errors[0])) +    async def respect_role_hierarchy(self, guild: Guild, actor: Member, target: Member) -> bool: +        """ +        Check if the highest role of the invoking member is less than or equal to the target member + +        Implement as a method rather than a check in order to avoid having to reimplement parameter +        checks & conversions in a dedicated check decorater +        """ + +        # Build role hierarchy +        role_hierarchy = {role: rank for rank, role in enumerate(reversed(guild.roles))} + +        return role_hierarchy[actor.top_role] <= role_hierarchy[target.top_role] +  def setup(bot):      bot.add_cog(Moderation(bot))  |