aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-03-13 18:27:34 +0000
committerGravatar jesopo2019-03-13 18:27:34 +0000
commitf236f879f4062cb188c0da9853ba2c5a54f7bba5 (patch)
tree75bce14ab6dcaa777afdb92eab380b90254a1c23 /modules
parentMerge pull request #48 from TheMythPT/patch-1 (diff)
signature
Reload bot.conf and modules on SIGHUP
Diffstat (limited to 'modules')
-rw-r--r--modules/signals.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/modules/signals.py b/modules/signals.py
index 91b4099e..25dc28dd 100644
--- a/modules/signals.py
+++ b/modules/signals.py
@@ -6,6 +6,7 @@ class Module(ModuleManager.BaseModule):
self._exited = False
signal.signal(signal.SIGINT, self.SIGINT)
signal.signal(signal.SIGUSR1, self.SIGUSR1)
+ signal.signal(signal.SIGHUP, self.SIGHUP)
def SIGINT(self, signum, frame):
print()
@@ -30,7 +31,34 @@ class Module(ModuleManager.BaseModule):
def SIGUSR1(self, signum, frame):
self.bot.trigger(self._reload_config)
+ def SIGHUP(self, signum, frame):
+ self.bot.trigger(self._SIGHUP)
+ def _SIGHUP(self):
+ self._reload_config()
+ self._reload_modules()
+
def _reload_config(self):
self.bot.log.info("Reloading config file", [])
self.bot.config.load()
self.bot.log.info("Reloaded config file", [])
+
+ def _reload(self, name):
+ self.bot.modules.unload_module(name)
+ self.bot.modules.load_module(self.bot, name)
+ def _reload_modules(self):
+ self.bot.log.info("Reloading modules", [])
+
+ reloaded = []
+ failed = []
+ for name in list(self.bot.modules.modules.keys()):
+ try:
+ self._reload(name)
+ except ModuleManager.ModuleWarning:
+ continue
+ except Exception as e:
+ failed.append(name)
+ continue
+ reloaded.append(name)
+
+ self.bot.log.info("Reloaded %d modules (%d failed)",
+ [len(reloaded), len(failed)])