diff options
| -rw-r--r-- | metricity/exts/event_listeners/guild_listeners.py | 21 | 
1 files changed, 20 insertions, 1 deletions
| 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: @@ -190,6 +201,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,          _before: discord.abc.GuildChannel, | 
