From 10aa23aaaef889f71c6ee937f866ae3e6cf13518 Mon Sep 17 00:00:00 2001 From: Leander Furumo Date: Mon, 28 Oct 2024 20:49:09 +0100 Subject: [PATCH] remove role mapping on role deletion --- src/cogs/rank_update.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/cogs/rank_update.py b/src/cogs/rank_update.py index 7298d1a..0be8f15 100644 --- a/src/cogs/rank_update.py +++ b/src/cogs/rank_update.py @@ -1,4 +1,5 @@ import asyncio +import dataclasses from datetime import datetime, timedelta import discord @@ -137,6 +138,27 @@ async def on_member_join(self, member: discord.Member): else: self.bot.logger.info(f'Rank not updated for user ({member.id}) - {update["reason"]}') + @commands.Cog.listener('on_guild_role_delete') + async def on_guild_role_delete(self, role: discord.Role): + """ + Clear database mapping if role is deleted + + Parameters + ---------- + role (discord.Role): Role instance + """ + + guild = await database.GuildTable().get(role.guild.id) + if not guild: + return + + attributes = dataclasses.asdict(guild) + for key, value in attributes.items(): + if value == role.id: + setattr(guild, key, None) + + self.bot.logger.info(f'Registered role {role.id} deleted! Removed the mapping!') + async def setup(bot: commands.Bot): """