from random import choices import string from discord.bot import Bot from discord import Intents from Music.VulkanBot import VulkanBot from os import listdir from Config.Configs import Configs from Config.Exceptions import VulkanError class VulkanInitializer: def __init__(self, willListen: bool) -> None: self.__config = Configs() self.__intents = Intents.default() self.__intents.message_content = True self.__intents.members = True self.__bot = self.__create_bot(willListen) self.__add_cogs(self.__bot) def getBot(self) -> VulkanBot: return self.__bot def __create_bot(self, willListen: bool) -> VulkanBot: if willListen: prefix = self.__config.BOT_PREFIX else: prefix = ''.join(choices(string.ascii_uppercase + string.digits, k=4)) bot = VulkanBot(command_prefix=prefix, pm_help=True, case_insensitive=True, intents=self.__intents) return bot def __add_cogs(self, bot: Bot) -> None: try: for filename in listdir(f'./{self.__config.COMMANDS_PATH}'): if filename.endswith('.py'): cogPath = f'{self.__config.COMMANDS_PATH}.{filename[:-3]}' bot.load_extension(cogPath, store=True) if len(bot.cogs.keys()) != self.__getTotalCogs(): raise VulkanError(message='Failed to load some Cog') except VulkanError as e: print(f'[Error Loading Vulkan] -> {e.message}') def __getTotalCogs(self) -> int: quant = 0 for filename in listdir(f'./{self.__config.COMMANDS_PATH}'): if filename.endswith('.py'): quant += 1 return quant