Fix channel deletion tracking

This commit is contained in:
BreadTube 2026-05-27 01:18:28 +09:00
commit 4743d14e35

View file

@ -141,7 +141,7 @@ class Bot:
self.logger.debug('Deleting duplicated text channels') self.logger.debug('Deleting duplicated text channels')
channel_names: list[str] = [c.name for c in self.guild_text_channels if c.name is not None] channel_names: list[str] = [c.name for c in self.guild_text_channels if c.name is not None]
unique_names: set[str] = set(channel_names) unique_names: set[str] = set(channel_names)
deleted_channels: set[TextChannel] = set() deleted_channels: list[TextChannel] = []
try: try:
for name in unique_names: for name in unique_names:
occurence = 0 occurence = 0
@ -152,7 +152,7 @@ class Bot:
self.logger.debug('Deleting duplicate channel: %d -> %s', channel.id, name) self.logger.debug('Deleting duplicate channel: %d -> %s', channel.id, name)
self.discord_manager.delete_text_channel( self.discord_manager.delete_text_channel(
channel.id, request_timeout=self.config.request_timeout) channel.id, request_timeout=self.config.request_timeout)
deleted_channels.add(channel) deleted_channels.append(channel)
finally: finally:
self.guild_text_channels = [c for c in self.guild_text_channels if c not in deleted_channels] self.guild_text_channels = [c for c in self.guild_text_channels if c not in deleted_channels]
@ -228,13 +228,13 @@ class Bot:
def _clean_category(self, category: ChannelCategory): def _clean_category(self, category: ChannelCategory):
self.logger.info('Cleaning category "%s" (%d)', category.name, category.id) self.logger.info('Cleaning category "%s" (%d)', category.name, category.id)
deleted_channels: set[TextChannel] = set() deleted_channels: list[TextChannel] = []
try: try:
for channel in self.guild_text_channels: for channel in self.guild_text_channels:
if channel.parent_id == category.id: if channel.parent_id == category.id:
self.logger.debug('Cleaning category -> deleting channel "%s"', channel.name) self.logger.debug('Cleaning category -> deleting channel "%s"', channel.name)
self.discord_manager.delete_text_channel(channel.id, request_timeout=self.config.request_timeout) self.discord_manager.delete_text_channel(channel.id, request_timeout=self.config.request_timeout)
deleted_channels.add(channel) deleted_channels.append(channel)
finally: finally:
self.guild_text_channels = [c for c in self.guild_text_channels if c not in deleted_channels] self.guild_text_channels = [c for c in self.guild_text_channels if c not in deleted_channels]