diff options
| author | 2018-09-01 11:29:26 +0100 | |
|---|---|---|
| committer | 2018-09-01 11:29:26 +0100 | |
| commit | 29609fffd77e495e86e6ba1a1f7f9e25d1607e1e (patch) | |
| tree | c6805f1d164d099d4085b2a1ac73c03377c13bd0 /EventManager.py | |
| parent | Add Utils.bold and Utils.underline (diff) | |
| signature | ||
Added functionality to load, unload and reload modules from a command!
Diffstat (limited to 'EventManager.py')
| -rw-r--r-- | EventManager.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/EventManager.py b/EventManager.py index 4ca5837c..326192ad 100644 --- a/EventManager.py +++ b/EventManager.py @@ -179,7 +179,7 @@ class EventHook(object): returns.append(hook.call(event)) except Exception as e: traceback.print_exc() - self.bot.log.error("failed to call event \"%s", [ + self.bot.log.error("failed to call event \"%s\"", [ event_path], exc_info=True) called += 1 @@ -202,11 +202,9 @@ class EventHook(object): child_name_lower = child_name.lower() if child_name_lower in self._children: del self._children[child_name_lower] - def get_children(self): - return self._children.keys() def check_purge(self): - if len(self.get_hooks()) == 0 and len(self._children + if len(self.get_hooks()) == 0 and len(self.get_children() ) == 0 and not self.parent == None: self.parent.remove_child(self.name) self.parent.check_purge() @@ -218,9 +216,16 @@ class EventHook(object): def purge_context(self, context): if self.has_context(context): self.remove_context(context) - for child in self.get_children(): + for child_name in self.get_children()[:]: + child = self.get_child(child_name) child.purge_context(context) + if child.is_empty(): + self.remove_child(child_name) def get_hooks(self): return sorted(self._hooks + list(itertools.chain.from_iterable( self._context_hooks.values())), key=lambda e: e.priority) + def get_children(self): + return list(self._children.keys()) + def is_empty(self): + return len(self.get_hooks() + self.get_children()) == 0 |
