diff --git a/docs/setup/initial_config.rst b/docs/setup/initial_config.rst index 26b83ad..b0261ad 100644 --- a/docs/setup/initial_config.rst +++ b/docs/setup/initial_config.rst @@ -45,7 +45,8 @@ Instance Configuration "modules":[ "PingResponder", "Services" - ] + ], + "module_configs": {} } In the example directory, this is stored in `config.json`. This may be @@ -102,3 +103,9 @@ options: A list of modules to load. Modules are loaded in the order they are listed here. :doc:`PingResponder ` and :doc:`Services ` are the *bare minimum* needed to open and maintain and IRC connection. + +.. cmdoption:: module_configs + + A dictionary mapping module names to module configs. If you prefer a monolithic config file instead of a json config + file per module, this can be populated with the same data as the separate config files. Entries here will be + preferred over separate config files. diff --git a/pyircbot/modulebase.py b/pyircbot/modulebase.py index a3bef3a..b18e023 100644 --- a/pyircbot/modulebase.py +++ b/pyircbot/modulebase.py @@ -45,10 +45,15 @@ class ModuleBase: self.log.info("Loaded module %s" % self.moduleName) def loadConfig(self): - """Loads this module's config into self.config""" - configPath = self.getConfigPath() - if configPath is not None: - self.config = PyIRCBot.load(configPath) + """ + Loads this module's config into self.config. The bot's main config is checked for a section matching the module + name, which will be preferred. If not found, an individual config file will be loaded from the data dir + """ + self.config = self.bot.botconfig.get("module_configs", {}).get(self.__class__.__name__, {}) + if not self.config: + configPath = self.getConfigPath() + if configPath is not None: + self.config = PyIRCBot.load(configPath) def ondisable(self): """Called when the module should be disabled. Your module should do any sort