""" lib.CogsPrepare ~~~~~~~~~~~~~ Loads, unloads Cogs files cog_list: return list of cog filenames work_with_cogs: loads, reloads and unloads cogs files """ from os import listdir, rename from disnake.ext.commands import Bot from .Logger import logger def cog_list(fold: str = './cogs') -> list: cogs_list = [] for _filename in listdir(fold): if _filename.endswith('.py'): cogs_list.append(_filename[:-3]) return cogs_list async def work_with_cogs(what_do: str, bot: Bot, cog: str | list): if isinstance(cog, str): cog = cog.split() for _filename in cog: if what_do == "load": await bot.load_extension(f'cogs.{_filename}') logger.info(f'Cog {_filename} loaded') elif what_do == 'unload': await bot.unload_extension(f'cogs.{_filename}') logger.info(f'Cog {_filename} unloaded') elif what_do == 'reload': await bot.reload_extension(f'cogs.{_filename}') logger.info(f'Cog {_filename} reloaded') elif what_do == 'disable': await bot.unload_extension(f'cogs.{_filename}') rename(f'cogs/{_filename}.py', f'cogs/disabled/{_filename}.py') logger.info(f'Cog {_filename} stopped and disabled') elif what_do == 'enable': rename(f'cogs/disabled/{_filename}.py', f'cogs/{_filename}.py') await bot.load_extension(f'cogs.{_filename}') logger.info(f'Cog {_filename} started and enabled')