Esempio n. 1
0
    async def reload(self, ctx, extension_name: str):
        """
            {command_prefix}reload [extension]

        Reloads an extension.
        """
        loaded = [c.__module__.split(".")[1] for c in self.bot.cogs.values()]
        unloaded = [c for c in _list_cogs()
                    if c not in loaded]
        if extension_name.lower() not in _list_cogs():
            return await ctx.send("This cog does not exist.")
        if extension_name.lower() not in unloaded:
            self.bot.unload_extension("cogs." + extension_name)
        try:
            self.bot.load_extension("cogs." + extension_name)
        except Exception as e:
            return await ctx.send(":x: {} have not been reloaded...```py\n{}: {}\n```".format(extension_name, type(e).__name__, str(e)))
        return await ctx.send(":heavy_check_mark: {} reloaded !".format(extension_name))
Esempio n. 2
0
    async def unload(self, ctx, extension_name: str):
        """
            {command_prefix}unload [extension]

        Unloads an extension.
        """
        if extension_name.lower() not in _list_cogs():
            return await ctx.send("This cog is not loaded.")
        if extension_name.lower() == self.__class__.__name__.lower():
            return await ctx.send("This cog cannot be unloaded.")
        self.bot.unload_extension("cogs." + extension_name.lower())
        await ctx.send(":heavy_check_mark: {} unloaded !".format(extension_name.lower()))
Esempio n. 3
0
    async def unloadall(self, ctx):
        """
            {command_prefix}unloadall

        Unloads every extensions.
        """
        msg = ""
        cogs = _list_cogs()

        for c in cogs:
            self.bot.unload_extension("cogs." + c)
            msg += (":heavy_check_mark: **{}** has been unloaded !\n".format(c))
        return await ctx.send(msg)
Esempio n. 4
0
    async def reloadall(self, ctx):
        """
            {command_prefix}reloadall

        Reloads every extensions.
        """
        msg = ""
        loaded = [c.__module__.split(".")[1] for c in self.bot.cogs.values()]
        unloaded = [c for c in _list_cogs()
                    if c not in loaded]
        cogs = _list_cogs()
        for c in cogs:
            if c not in unloaded:
                self.bot.unload_extension("cogs." + c)
            try:
                self.bot.load_extension("cogs." + c)
            except Exception as e:
                msg += (":x: **{}** have not been loaded... ``{}: {}``\n".format(c,
                                                                                 type(e).__name__, e))
                continue
            msg += (":heavy_check_mark: **{}** has been reloaded !\n".format(c))
        return await ctx.send(msg)
Esempio n. 5
0
    async def _show_cogs(self, ctx):
        """
            {command_prefix}cogs

        Shows loaded/unloaded cogs.
        """
        loaded = [c.__module__.split(".")[1] for c in self.bot.cogs.values()]
        unloaded = [c for c in _list_cogs() if c not in loaded]

        if not unloaded:
            unloaded = ["None"]

        msg = ("+ Loaded\n"
               "{}\n\n"
               "- Unloaded\n"
               "{}"
               "".format(", ".join(sorted(loaded)),
                         ", ".join(sorted(unloaded))))
        for page in pagify(msg, [" "], shorten_by=16):
            await ctx.send(box(page.lstrip(" "), lang="diff"))
Esempio n. 6
0
    async def on_ready(self):
        if self.init_ok:
            return
        # Store registred custom prefixes
        prefix_servers = SettingsDB.get_instance(
        ).guild_settings_collection.find({
            "$and": [{
                "prefix": {
                    "$exists": True
                }
            }, {
                "prefix": {
                    "$ne": globprefix
                }
            }]
        })

        async for server in prefix_servers:
            self.prefixes_map[server["_id"]] = server["prefix"]

        # Store registred custom languages
        language_servers = SettingsDB.get_instance(
        ).guild_settings_collection.find({
            "$and": [{
                "language": {
                    "$exists": True
                }
            }, {
                "language": {
                    "$ne": "english"
                }
            }]
        })

        async for lang in language_servers:
            self.languages_map[lang["_id"]] = lang["language"]

        # Store registred OwO mod
        owo_servers = SettingsDB.get_instance().guild_settings_collection.find(
            {"$and": [{
                "owo": {
                    "$exists": True
                }
            }, {
                "owo": {
                    "$ne": False
                }
            }]})

        async for server in owo_servers:
            self.owo_map[server["_id"]] = server["owo"]

        # Store registred autosongs
        autosongs_servers = SettingsDB.get_instance(
        ).guild_settings_collection.find({
            "$and": [{
                "autosongs": {
                    "$exists": True
                }
            }, {
                "autosongs": {
                    "$ne": {}
                }
            }]
        })

        async for server in autosongs_servers:
            self.autosongs_map[server["_id"]] = server["autosongs"]

        # Multiprocessing guild count
        self.owner_id = owner_id
        self.config = await SettingsDB.get_instance().get_glob_settings()
        if self.is_main_process and self.shard_count != len(
                self.config.server_count):
            self.config.server_count = {}
            await SettingsDB.get_instance().set_glob_settings(self.config)

        # Load cogs
        for extension in _list_cogs():
            try:
                self.load_extension("cogs." + extension)
            except Exception as e:
                exc = '{}: {}'.format(type(e).__name__, e)
                log.warning('Failed to load extension {}\n{}'.format(
                    extension, exc))

        total_cogs = len(_list_cogs())
        servers = len(self.guilds)
        owner = await self.safe_fetch('user', owner_id) or str(owner_id)

        log.info("-----------------")
        log.info("{} ({})".format(str(self.user), str(self.user.id)))
        log.info("{} server{}".format(servers, "s" if servers > 1 else ""))
        log.info("{} shard{}".format(self.shard_count,
                                     "s" if self.shard_count > 1 else ""))
        log.info("Prefix: {}".format(globprefix))
        log.info("Owner: {}".format(owner))
        log.info("{}/{} active cogs with {} commands".format(
            len(self.cogs), total_cogs, len(self.commands)))
        log.info("-----------------")

        if self.pipe and not self.pipe.closed:
            self.pipe.send(1)
            self.pipe.close()

        # Disable all loggers
        for name in ['launcher', 'lavalink', 'listenmoe']:
            logger = logging.getLogger(name)
            logger.disabled = not logger.disabled

        self.init_ok = True
Esempio n. 7
0
 async def unload_all_cogs(self):
     cogs = _list_cogs()
     for c in cogs:
         self.bot.unload_extension("cogs." + c)