From d192c7d0c2a2fce8f45b52a7dae07773ea76b74f Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Sun, 7 Apr 2024 23:09:34 +0100 Subject: Update channel sync to keep Channel.deleted attribute up to date --- metricity/exts/event_listeners/guild_listeners.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/metricity/exts/event_listeners/guild_listeners.py b/metricity/exts/event_listeners/guild_listeners.py index d31aa8a..0d25cb2 100644 --- a/metricity/exts/event_listeners/guild_listeners.py +++ b/metricity/exts/event_listeners/guild_listeners.py @@ -153,11 +153,22 @@ class GuildListeners(commands.Cog): name=channel.name, category_id=category_id, is_staff=is_staff, + deleted=False, )) await sess.commit() - log.info("Channel synchronisation process complete, synchronising threads") + log.info("Channel synchronisation process complete, synchronising deleted channels") + + async with async_session() as sess: + await sess.execute( + update(models.Channel) + .where(~models.Channel.id.in_([str(channel.id) for channel in guild.channels])) + .values(deleted=True), + ) + await sess.commit() + + log.info("Deleted channel synchronisation process complete, synchronising threads") async with async_session() as sess: for thread in guild.threads: @@ -189,6 +200,14 @@ class GuildListeners(commands.Cog): await self.sync_channels(channel.guild) + @commands.Cog.listener() + async def on_guild_channel_delete(self, channel: discord.abc.GuildChannel) -> None: + """Set the deleted flag to true when a channel is deleted.""" + if channel.guild.id != BotConfig.guild_id: + return + + await self.sync_channels(channel.guild) + @commands.Cog.listener() async def on_guild_channel_update( self, -- cgit v1.2.3