diff options
author | 2024-04-07 23:09:34 +0100 | |
---|---|---|
committer | 2024-04-07 23:09:34 +0100 | |
commit | d192c7d0c2a2fce8f45b52a7dae07773ea76b74f (patch) | |
tree | b5b929c5d83b6a0555d6b5abe7a931a632796c47 | |
parent | Add migration for Channel.deleted column (diff) |
Update channel sync to keep Channel.deleted attribute up to date
-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, |