aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jesopo2018-09-13 13:35:05 +0100
committerGravatar jesopo2018-09-13 13:35:05 +0100
commit1eed727bc5a8efaded32035cd1922851d799156c (patch)
treeacc6efcca649bada764ec86781ca9d64d908d9c2
parentOops, this isn't C#. (diff)
signature
Add !enablemodule and !disablemodule to modules.py
-rw-r--r--ModuleManager.py4
-rw-r--r--modules/modules.py35
-rwxr-xr-xstart.py7
3 files changed, 40 insertions, 6 deletions
diff --git a/ModuleManager.py b/ModuleManager.py
index 56ad2323..a67cacad 100644
--- a/ModuleManager.py
+++ b/ModuleManager.py
@@ -78,10 +78,10 @@ class ModuleManager(object):
else:
self.bot.log.error("Module '%s' not loaded", [name])
- def load_modules(self, whitelist=None):
+ def load_modules(self, whitelist=[], blacklist=[]):
for path in self.list_modules():
name = self._module_name(path)
- if whitelist == None or name in whitelist:
+ if name in whitelist or (not whitelist and not name in blacklist):
self.load_module(name)
def unload_module(self, name):
diff --git a/modules/modules.py b/modules/modules.py
index 8e4da8ad..0f18b10f 100644
--- a/modules/modules.py
+++ b/modules/modules.py
@@ -13,6 +13,13 @@ class Module(object):
min_args=1, permission="reload-module", help="Reload a module",
usage="<module-name>")
+ events.on("received.command.enablemodule").hook(self.enable,
+ min_args=1, permission="enable-module", help="Enable a module",
+ usage="<module-name>")
+ events.on("received.command.disablemodule").hook(self.disable,
+ min_args=1, permission="disable-module", help="Disable a module",
+ usage="<module-name>")
+
def load(self, event):
name = event["args_split"][0].lower()
if name in self.bot.modules.modules:
@@ -37,3 +44,31 @@ class Module(object):
self.bot.modules.unload_module(name)
self.bot.modules.load_module(name)
event["stdout"].write("Reloaded '%s'" % name)
+
+ def enable(self, event):
+ name = event["args_split"][0].lower()
+ blacklist = self.bot.get_setting("module-blacklist", [])
+ if not name in blacklist:
+ event["stderr"].write("Module '%s' isn't disabled" % name)
+ return
+
+ blacklist.remove(name)
+ event["stdout"].write("Module '%s' has been enabled and can now "
+ "be loaded" % name)
+
+ def disable(self, event):
+ name = event["args_split"][0].lower()
+ and_unloaded = ""
+ if name in self.bot.modules.modules:
+ self.bot.modules.unload_module(name)
+ and_unloaded = " and unloaded"
+
+ blacklist = self.bot.get_setting("module-blacklist", [])
+ if name in blacklist:
+ event["stderr"].write("Module '%s' is already disabled" % name)
+ return
+
+ blacklist.append(name)
+ self.bot.set_setting("module-blacklist", blacklist)
+ event["stdout"].write("Module '%s' has been disabled%s" % (
+ name, and_unloaded))
diff --git a/start.py b/start.py
index 6dabd853..1ed9909f 100755
--- a/start.py
+++ b/start.py
@@ -25,10 +25,9 @@ bot.database = database
bot.config = config.load_config()
bot.args = args
-whitelist = bot.config.get("module_whitelist", None)
-if not whitelist == None:
- whitelist = whitelist.split(",")
-bot.modules.load_modules(whitelist=whitelist)
+whitelist = bot.get_setting("module-whitelist", [])
+blacklist = bot.get_setting("module-blacklist", [])
+bot.modules.load_modules(whitelist=whitelist, blacklist=blacklist)
server_details = database.servers.get_all()
servers = []