Keep track of channel deletion
This commit is contained in:
parent
a43096b84c
commit
1340e8d49a
1 changed files with 23 additions and 13 deletions
|
|
@ -141,15 +141,20 @@ 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)
|
||||||
for name in unique_names:
|
deleted_channels: set[TextChannel] = set()
|
||||||
occurence = 0
|
try:
|
||||||
for channel in self.guild_text_channels:
|
for name in unique_names:
|
||||||
if channel.name == name:
|
occurence = 0
|
||||||
occurence += 1
|
for channel in self.guild_text_channels:
|
||||||
if occurence > 1:
|
if channel.name == name:
|
||||||
self.logger.debug('Deleting duplicate channel: %d -> %s', channel.id, name)
|
occurence += 1
|
||||||
self.discord_manager.delete_text_channel(
|
if occurence > 1:
|
||||||
channel.id, request_timeout=self.config.request_timeout)
|
self.logger.debug('Deleting duplicate channel: %d -> %s', channel.id, name)
|
||||||
|
self.discord_manager.delete_text_channel(
|
||||||
|
channel.id, request_timeout=self.config.request_timeout)
|
||||||
|
deleted_channels.add(channel)
|
||||||
|
finally:
|
||||||
|
self.guild_text_channels = [c for c in self.guild_text_channels if c not in deleted_channels]
|
||||||
|
|
||||||
def _get_all_channel_messages(self, channel: TextChannel) -> list[Message]:
|
def _get_all_channel_messages(self, channel: TextChannel) -> list[Message]:
|
||||||
messages_id_delete_task: set[int] = set()
|
messages_id_delete_task: set[int] = set()
|
||||||
|
|
@ -223,10 +228,15 @@ 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)
|
||||||
for channel in self.guild_categories:
|
deleted_channels: set[TextChannel] = set()
|
||||||
if channel.parent_id == category.id:
|
try:
|
||||||
self.logger.debug('Cleaning category -> deleting channel "%s"', channel.name)
|
for channel in self.guild_text_channels:
|
||||||
self.discord_manager.delete_text_channel(channel.id, request_timeout=self.config.request_timeout)
|
if channel.parent_id == category.id:
|
||||||
|
self.logger.debug('Cleaning category -> deleting channel "%s"', channel.name)
|
||||||
|
self.discord_manager.delete_text_channel(channel.id, request_timeout=self.config.request_timeout)
|
||||||
|
deleted_channels.add(channel)
|
||||||
|
finally:
|
||||||
|
self.guild_text_channels = [c for c in self.guild_text_channels if c not in deleted_channels]
|
||||||
|
|
||||||
def _parse_command(self, message: Message) -> bool:
|
def _parse_command(self, message: Message) -> bool:
|
||||||
match BotCommand(message.content[:100].split(' ')[0]) if message.content else BotCommand.UNKNOWN:
|
match BotCommand(message.content[:100].split(' ')[0]) if message.content else BotCommand.UNKNOWN:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue