From 79a3164d9d87ee1beabcf82d1f1e84a50052f16f Mon Sep 17 00:00:00 2001 From: Michael H Date: Wed, 11 Jul 2018 21:17:44 -0400 Subject: [PATCH] [V3] Mod/admin role logic corrections (#1914) * [V3] Mod/admin role logic corrections * Update mod.py * Update mod.py --- redbot/core/utils/mod.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/redbot/core/utils/mod.py b/redbot/core/utils/mod.py index 25a81f54a..aa3ab50e5 100644 --- a/redbot/core/utils/mod.py +++ b/redbot/core/utils/mod.py @@ -135,16 +135,10 @@ async def is_mod_or_superior(bot: Red, obj: Union[discord.Message, discord.Membe if isinstance(obj, discord.Role): return obj.id in [admin_role_id, mod_role_id] - mod_roles = [r for r in server.roles if r.id == mod_role_id] - mod_role = mod_roles[0] if len(mod_roles) > 0 else None - admin_roles = [r for r in server.roles if r.id == admin_role_id] - admin_role = admin_roles[0] if len(admin_roles) > 0 else None - if user and user == await bot.is_owner(user): + if await bot.is_owner(user): return True - elif admin_role and discord.utils.get(user.roles, name=admin_role): - return True - elif mod_role and discord.utils.get(user.roles, name=mod_role): + elif discord.utils.find(lambda r: r.id in (admin_role_id, mod_role_id), user.roles): return True else: return False @@ -220,17 +214,14 @@ async def is_admin_or_superior( else: raise TypeError("Only messages, members or roles may be passed") - server = obj.guild - admin_role_id = await bot.db.guild(server).admin_role() + admin_role_id = await bot.db.guild(obj.guild).admin_role() if isinstance(obj, discord.Role): return obj.id == admin_role_id - admin_roles = [r for r in server.roles if r.id == admin_role_id] - admin_role = admin_roles[0] if len(admin_roles) > 0 else None if user and await bot.is_owner(user): return True - elif admin_roles and discord.utils.get(user.roles, name=admin_role): + elif discord.utils.get(user.roles, id=admin_role_id): return True else: return False