diff options
| -rw-r--r-- | bot/cogs/moderation.py | 17 | 
1 files changed, 8 insertions, 9 deletions
| diff --git a/bot/cogs/moderation.py b/bot/cogs/moderation.py index d9c217b83..64c76ae8a 100644 --- a/bot/cogs/moderation.py +++ b/bot/cogs/moderation.py @@ -1243,7 +1243,7 @@ class Moderation(Scheduler):      async def respect_role_hierarchy(self, ctx: Context, target: Member, infraction_type: str) -> bool:          """ -        Check if the highest role of the invoking member is less than or equal to the target member +        Check if the highest role of the invoking member is greater than that of the target member          If this check fails, a warning is sent to the invoking ctx @@ -1251,19 +1251,18 @@ class Moderation(Scheduler):          checks & conversions in a dedicated check decorater          """ -        # Build role hierarchy          actor = ctx.author -        role_hierarchy = {role: rank for rank, role in enumerate(reversed(ctx.guild.roles))} -        hierarchy_check = role_hierarchy[actor.top_role] <= role_hierarchy[target.top_role] - -        if not hierarchy_check: +        target_is_lower = target.top_role < actor.top_role +        if not target_is_lower:              log.info(                  f"{actor} ({actor.id}) attempted to {infraction_type} " -                f"{target} ({target.id}), who has a higher top role" +                f"{target} ({target.id}), who has an equal or higher top role" +            ) +            await ctx.send( +                f":x: {actor.mention}, you may not {infraction_type} someone with an equal or higher top role"              ) -            await ctx.send(f":x: {actor.mention}, you may not {infraction_type} someone with a higher top role") -        return hierarchy_check +        return target_is_lower  def setup(bot): | 
