diff --git a/nemubot/modulecontext.py b/nemubot/modulecontext.py index 877b8de..bfb1938 100644 --- a/nemubot/modulecontext.py +++ b/nemubot/modulecontext.py @@ -14,6 +14,9 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from nemubot.hooks import Abstract as AbstractHook +from nemubot.server.abstract import AbstractServer + class _ModuleContext: def __init__(self, module=None): @@ -37,12 +40,10 @@ class _ModuleContext: return module_state.ModuleState("nemubotstate") def add_hook(self, hook, *triggers): - from nemubot.hooks import Abstract as AbstractHook assert isinstance(hook, AbstractHook), hook self.hooks.append((triggers, hook)) def del_hook(self, hook, *triggers): - from nemubot.hooks import Abstract as AbstractHook assert isinstance(hook, AbstractHook), hook self.hooks.remove((triggers, hook)) @@ -67,7 +68,9 @@ class _ModuleContext: self.context.datastore.save(self.module_name, self.data) def subparse(self, orig, cnt): - if orig.server in self.context.servers: + if isinstance(orig.server, AbstractServer): + return orig.server.subparse(orig, cnt) + elif orig.server in self.context.servers: return self.context.servers[orig.server].subparse(orig, cnt) @property @@ -115,13 +118,11 @@ class ModuleContext(_ModuleContext): return self.context.datastore.load(self.module_name) def add_hook(self, hook, *triggers): - from nemubot.hooks import Abstract as AbstractHook assert isinstance(hook, AbstractHook), hook self.hooks.append((triggers, hook)) return self.context.treater.hm.add_hook(hook, *triggers) def del_hook(self, hook, *triggers): - from nemubot.hooks import Abstract as AbstractHook assert isinstance(hook, AbstractHook), hook self.hooks.remove((triggers, hook)) return self.context.treater.hm.del_hooks(*triggers, hook=hook) @@ -136,7 +137,9 @@ class ModuleContext(_ModuleContext): return self.context.del_event(evt, module_src=self.module) def send_response(self, server, res): - if server in self.context.servers: + if isinstance(server, AbstractServer): + server.send_response(res) + elif server in self.context.servers: if res.server is not None: return self.context.servers[res.server].send_response(res) else: diff --git a/nemubot/server/message/IRC.py b/nemubot/server/message/IRC.py index 5ccd735..48ef9a4 100644 --- a/nemubot/server/message/IRC.py +++ b/nemubot/server/message/IRC.py @@ -146,7 +146,7 @@ class IRC(Abstract): receivers = self.decode(self.params[0]).split(',') common_args = { - "server": srv.name, + "server": srv, "date": self.tags["time"], "to": receivers, "to_response": [r if r != srv.nick else self.nick for r in receivers],