From 0c036765beb1f1649acb870c88aa183184b721aa Mon Sep 17 00:00:00 2001 From: Leander Furumo Date: Tue, 16 Apr 2024 04:23:46 +0200 Subject: [PATCH] initial role remover/adder util function --- bot/src/cogs/galtinn.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/bot/src/cogs/galtinn.py b/bot/src/cogs/galtinn.py index e194c9c..fcba305 100644 --- a/bot/src/cogs/galtinn.py +++ b/bot/src/cogs/galtinn.py @@ -148,6 +148,33 @@ class Galtinn(commands.Cog): return roles_to_add, roles_to_remove + async def add_remove_roles(self, user: discord.Member, roles_to_add: set, roles_to_remove: set) -> bool: + """ + Attempts to assign and remove roles to/from a user. + + Parameters + ---------- + user (discord.Member): Discord user + roles_to_add (set): Roles to assign + roles_to_remove (set): Roles to remove + + Reuturns + ---------- + bool: True if successful, False otherwise + """ + + try: + await user.add_roles(*roles_to_add, reason="Membership check") + await user.remove_roles(*roles_to_remove, reason="Membership check") + except discord.Forbidden: + self.bot.logger.error(f"Failed to assign roles to user {user.id}. Forbidden") + return False + except discord.HTTPException as e: + self.bot.logger.error(f"Failed to assign roles to user {user.id}. {e}") + return False + + return True + @tasks.loop(time=misc_utils.MIDNIGHT) async def membership_check(self): """