From a79c15ac768dd13203d96e6e681754711037d620 Mon Sep 17 00:00:00 2001 From: Zevaryx Date: Thu, 2 Sep 2021 11:39:03 -0600 Subject: [PATCH] Role cleanup at end of command instead of beginning --- jarvis/cogs/rolegiver.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/jarvis/cogs/rolegiver.py b/jarvis/cogs/rolegiver.py index b19b1d7..8f8f604 100644 --- a/jarvis/cogs/rolegiver.py +++ b/jarvis/cogs/rolegiver.py @@ -43,7 +43,6 @@ class RolegiverCog(commands.Cog): for role_id in setting.value: e_role = ctx.guild.get_role(role_id) if not e_role: - setting.value.remove(role_id) continue roles.append(e_role) if roles: @@ -73,6 +72,13 @@ class RolegiverCog(commands.Cog): await ctx.send(embed=embed) + guild_roles = await ctx.guild.fetch_roles() + guild_role_ids = [x.id for x in guild_roles] + for role_id in setting.value: + if role_id not in guild_role_ids: + setting.value.remove(role_id) + setting.save() + @cog_ext.cog_subcommand( base="rolegiver", name="remove", @@ -102,7 +108,6 @@ class RolegiverCog(commands.Cog): for role_id in setting.value: e_role = ctx.guild.get_role(role_id) if not e_role: - setting.value.remove(role_id) continue roles.append(e_role) @@ -132,6 +137,13 @@ class RolegiverCog(commands.Cog): await ctx.send(embed=embed) + guild_roles = await ctx.guild.fetch_roles() + guild_role_ids = [x.id for x in guild_roles] + for role_id in setting.value: + if role_id not in guild_role_ids: + setting.value.remove(role_id) + setting.save() + @cog_ext.cog_subcommand( base="rolegiver", name="list", @@ -147,7 +159,6 @@ class RolegiverCog(commands.Cog): for role_id in setting.value: e_role = ctx.guild.get_role(role_id) if not e_role: - setting.value.remove(role_id) continue roles.append(e_role) @@ -171,6 +182,11 @@ class RolegiverCog(commands.Cog): embed.set_footer(text=f"{ctx.author.name}#{ctx.author.discriminator} | {ctx.author.id}") await ctx.send(embed=embed) + guild_roles = await ctx.guild.fetch_roles() + guild_role_ids = [x.id for x in guild_roles] + for role_id in setting.value: + if role_id not in guild_role_ids: + setting.value.remove(role_id) setting.save() @cog_ext.cog_subcommand(