aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2019-10-03 14:47:16 -0700
committerGravatar MarkKoz <[email protected]>2019-10-03 15:32:09 -0700
commit6cdda6a6efcb6201d56d036c21a056621533380f (patch)
tree636f8353e702b8a33e82e7a158239d73d0a48df3
parentAdd 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.py20
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)