diff options
author | 2019-10-03 14:47:16 -0700 | |
---|---|---|
committer | 2019-10-03 15:32:09 -0700 | |
commit | 6cdda6a6efcb6201d56d036c21a056621533380f (patch) | |
tree | 636f8353e702b8a33e82e7a158239d73d0a48df3 | |
parent | Add enum for extension actions (diff) |
Simplify extension discovery using pkgutil
The cog now keeps a set of full qualified names of all extensions.
-rw-r--r-- | bot/cogs/extensions.py | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/bot/cogs/extensions.py b/bot/cogs/extensions.py index 10f4d38e3..468c350bb 100644 --- a/bot/cogs/extensions.py +++ b/bot/cogs/extensions.py @@ -1,13 +1,12 @@ import logging import os from enum import Enum +from pkgutil import iter_modules from discord import Colour, Embed from discord.ext.commands import Bot, Cog, Context, group -from bot.constants import ( - Emojis, MODERATION_ROLES, Roles, URLs -) +from bot.constants import Emojis, MODERATION_ROLES, Roles, URLs from bot.decorators import with_role from bot.pagination import LinePaginator @@ -29,19 +28,10 @@ class Extensions(Cog): def __init__(self, bot: Bot): self.bot = bot - self.cogs = {} - # Load up the cog names - log.info("Initializing cog names...") - for filename in os.listdir("bot/cogs"): - if filename.endswith(".py") and "_" not in filename: - if os.path.isfile(f"bot/cogs/{filename}"): - cog = filename[:-3] - - self.cogs[cog] = f"bot.cogs.{cog}" - - # Allow reverse lookups by reversing the pairs - self.cogs.update({v: k for k, v in self.cogs.items()}) + log.info("Initialising extension names...") + modules = iter_modules(("bot/cogs", "bot.cogs")) + self.cogs = set(ext for ext in modules if ext.name[-1] != "_") @group(name='extensions', aliases=('c', 'ext', 'exts'), invoke_without_command=True) @with_role(*MODERATION_ROLES, Roles.core_developer) |