diff --git a/nemubot/bot.py b/nemubot/bot.py index 6cbab75..db2f653 100644 --- a/nemubot/bot.py +++ b/nemubot/bot.py @@ -25,7 +25,6 @@ from nemubot import __version__ from nemubot.consumer import Consumer, EventConsumer, MessageConsumer from nemubot import datastore import nemubot.hooks -from nemubot.modulecontext import ModuleContext logger = logging.getLogger("nemubot") @@ -70,19 +69,19 @@ class Bot(threading.Thread): self.event_timer = None # Own hooks - from nemubot.hooks.manager import HooksManager - self.hooks = HooksManager() + from nemubot.treatment import MessageTreater + self.treater = MessageTreater() import re def in_ping(msg): if re.match("^ *(m[' ]?entends?[ -]+tu|h?ear me|do you copy|ping)", msg.message, re.I) is not None: return msg.respond("pong") - self.hooks.add_hook(nemubot.hooks.Message(in_ping), "in", "DirectAsk") + self.treater.hm.add_hook(nemubot.hooks.Message(in_ping), "in", "DirectAsk") def in_echo(msg): from nemubot.message import Text return Text(msg.nick + ": " + " ".join(msg.args), to=msg.to_response) - self.hooks.add_hook(nemubot.hooks.Message(in_echo, "echo"), "in", "Command") + self.treater.hm.add_hook(nemubot.hooks.Message(in_echo, "echo"), "in", "Command") def _help_msg(msg): """Parse and response to help messages""" @@ -129,7 +128,7 @@ class Bot(threading.Thread): " de tous les modules disponibles localement", message=["\x03\x02%s\x03\x02 (%s)" % (im, self.modules[im].__doc__) for im in self.modules if self.modules[im].__doc__]) return res - self.hooks.add_hook(nemubot.hooks.Message(_help_msg, "help"), "in", "Command") + self.treater.hm.add_hook(nemubot.hooks.Message(_help_msg, "help"), "in", "Command") from queue import Queue # Messages to be treated @@ -400,6 +399,7 @@ class Bot(threading.Thread): module.print = prnt # Create module context + from nemubot.modulecontext import ModuleContext module.__nemubot_context__ = ModuleContext(self, module) if not hasattr(module, "logger"): diff --git a/nemubot/consumer.py b/nemubot/consumer.py index c764a69..9c9d90d 100644 --- a/nemubot/consumer.py +++ b/nemubot/consumer.py @@ -58,10 +58,8 @@ class MessageConsumer: msg.frm_owner = (not hasattr(self.srv, "owner") or self.srv.owner == msg.frm) # Treat the message - from nemubot.treatment import MessageTreater - mt = MessageTreater(context.hooks) # Should be in context, this is static for msg in msgs: - for res in mt.treat_msg(msg): + for res in context.treater.treat_msg(msg): # Identify the destination to_server = None if isinstance(res, str): diff --git a/nemubot/modulecontext.py b/nemubot/modulecontext.py index be7842b..5b47278 100644 --- a/nemubot/modulecontext.py +++ b/nemubot/modulecontext.py @@ -62,13 +62,13 @@ class ModuleContext: def add_hook(store, hook): store = convert_legacy_store(store) self.hooks.append((store, hook)) - return context.hooks.add_hook(hook, store) + return context.treater.hm.add_hook(hook, store) def del_hook(store, hook): store = convert_legacy_store(store) self.hooks.remove((store, hook)) - return context.hooks.del_hook(hook, store) + return context.treater.hm.del_hook(hook, store) def call_hook(store, msg): - for h in context.hooks.get_hooks(store): + for h in context.treater.hm.get_hooks(store): if h.match(msg): res = h.run(msg) if isinstance(res, list): diff --git a/nemubot/treatment.py b/nemubot/treatment.py index 0ea535b..8bbdabb 100644 --- a/nemubot/treatment.py +++ b/nemubot/treatment.py @@ -23,8 +23,9 @@ class MessageTreater: """Treat a message""" - def __init__(self, hm): - self.hm = hm # Pointer to the HookManager + def __init__(self): + from nemubot.hooks.manager import HooksManager + self.hm = HooksManager() def treat_msg(self, msg):