diff options
| author | 2020-08-19 13:00:35 -0700 | |
|---|---|---|
| committer | 2020-08-19 13:05:05 -0700 | |
| commit | 3c2d654ecd8872ec6eee8efd8ef8d90313f3b30e (patch) | |
| tree | 69c1e13af9a0bd40abfc2150bc91cf9284e6c841 | |
| parent | Extensions: move utility functions to a utility module (diff) | |
Dynamically discover and load extensions upon startup
Being explicit is nice, but the list of extensions to load has gotten
quite long. It's a bit of an eyesore.
It's still fairly easy to temporarily exclude extensions: just remove
them from the set. Granted, being able to comment them out was more
convenient.
| -rw-r--r-- | bot/__main__.py | 70 |
1 files changed, 9 insertions, 61 deletions
diff --git a/bot/__main__.py b/bot/__main__.py index 555847357..8770ac31b 100644 --- a/bot/__main__.py +++ b/bot/__main__.py @@ -9,7 +9,9 @@ from sentry_sdk.integrations.redis import RedisIntegration from bot import constants, patches from bot.bot import Bot +from bot.utils.extensions import EXTENSIONS +# Set up Sentry. sentry_logging = LoggingIntegration( level=logging.DEBUG, event_level=logging.WARNING @@ -24,6 +26,7 @@ sentry_sdk.init( ] ) +# Instantiate the bot. allowed_roles = [discord.Object(id_) for id_ in constants.MODERATION_ROLES] bot = Bot( command_prefix=when_mentioned_or(constants.Bot.prefix), @@ -33,68 +36,13 @@ bot = Bot( allowed_mentions=discord.AllowedMentions(everyone=False, roles=allowed_roles) ) -# Backend -bot.load_extension("bot.exts.backend.config_verifier") -bot.load_extension("bot.exts.backend.error_handler") -bot.load_extension("bot.exts.backend.logging") -bot.load_extension("bot.exts.backend.sync") +# Load extensions. +extensions = set(EXTENSIONS) # Create a mutable copy. +if not constants.HelpChannels.enable: + extensions.remove("bot.exts.help_channels") -# Filters -bot.load_extension("bot.exts.filters.antimalware") -bot.load_extension("bot.exts.filters.antispam") -bot.load_extension("bot.exts.filters.filter_lists") -bot.load_extension("bot.exts.filters.filtering") -bot.load_extension("bot.exts.filters.security") -bot.load_extension("bot.exts.filters.token_remover") -bot.load_extension("bot.exts.filters.webhook_remover") - -# Info -bot.load_extension("bot.exts.info.doc") -bot.load_extension("bot.exts.info.help") -bot.load_extension("bot.exts.info.information") -bot.load_extension("bot.exts.info.python_news") -bot.load_extension("bot.exts.info.reddit") -bot.load_extension("bot.exts.info.site") -bot.load_extension("bot.exts.info.source") -bot.load_extension("bot.exts.info.stats") -bot.load_extension("bot.exts.info.tags") -bot.load_extension("bot.exts.info.wolfram") - -# Moderation -bot.load_extension("bot.exts.moderation.defcon") -bot.load_extension("bot.exts.moderation.incidents") -bot.load_extension("bot.exts.moderation.modlog") -bot.load_extension("bot.exts.moderation.silence") -bot.load_extension("bot.exts.moderation.slowmode") -bot.load_extension("bot.exts.moderation.verification") - -# Moderation - Infraction -bot.load_extension("bot.exts.moderation.infraction.infractions") -bot.load_extension("bot.exts.moderation.infraction.management") -bot.load_extension("bot.exts.moderation.infraction.superstarify") - -# Moderation - Watchchannels -bot.load_extension("bot.exts.moderation.watchchannels.bigbrother") -bot.load_extension("bot.exts.moderation.watchchannels.talentpool") - -# Utils -bot.load_extension("bot.exts.utils.bot") -bot.load_extension("bot.exts.utils.clean") -bot.load_extension("bot.exts.utils.eval") -bot.load_extension("bot.exts.utils.extensions") -bot.load_extension("bot.exts.utils.jams") -bot.load_extension("bot.exts.utils.reminders") -bot.load_extension("bot.exts.utils.snekbox") -bot.load_extension("bot.exts.utils.utils") - -# Misc -bot.load_extension("bot.exts.alias") -bot.load_extension("bot.exts.dm_relay") -bot.load_extension("bot.exts.duck_pond") -bot.load_extension("bot.exts.off_topic_names") - -if constants.HelpChannels.enable: - bot.load_extension("bot.exts.help_channels") +for extension in extensions: + bot.load_extension(extension) # Apply `message_edited_at` patch if discord.py did not yet release a bug fix. if not hasattr(discord.message.Message, '_handle_edited_timestamp'): |