New function in ModuleContext: call_hook

This commit is contained in:
nemunaire 2015-06-05 06:59:11 +02:00
parent c86031ea32
commit f4a80e0fda
3 changed files with 30 additions and 2 deletions

View File

@ -19,6 +19,7 @@
"""Progressive display of very long messages"""
import logging
import sys
from nemubot.message import Text, DirectAsk
from nemubot.hooks import hook
@ -134,6 +135,17 @@ class Response:
return Text(self.get_message(maxlen),
server=None, to=self.receivers)
def __str__(self):
ret = []
if len(self.messages):
for msg in self.messages:
if isinstance(msg, list):
ret.append(", ".join(msg))
else:
ret.append(msg)
ret.append(self.nomore)
return "\n".join(ret)
def get_message(self, maxlen):
if self.alone and len(self.messages) > 1:
self.alone = False

View File

@ -21,7 +21,7 @@ class Abstract:
"""This class represents an abstract message"""
def __init__(self, server, date=None, to=None, to_response=None, frm=None):
def __init__(self, server=None, date=None, to=None, to_response=None, frm=None):
"""Initialize an abstract message
Arguments:
@ -59,7 +59,10 @@ class Abstract:
@property
def channel(self):
# TODO: this is for legacy modules
return self.to_response[0]
if self.to_response is not None and len(self.to_response) > 0:
return self.to_response[0]
else:
return None
@property
def nick(self):

View File

@ -67,6 +67,15 @@ class ModuleContext:
store = convert_legacy_store(store)
self.hooks.remove((store, hook))
return context.hooks.del_hook(hook, store)
def call_hook(store, msg):
for h in context.hooks.get_hooks(store):
if h.match(msg):
res = h.run(msg)
if isinstance(res, list):
for i in res:
yield i
else:
yield res
def add_event(evt, eid=None):
return context.add_event(evt, eid, module_src=module)
def del_event(evt):
@ -93,6 +102,9 @@ class ModuleContext:
def del_hook(store, hook):
store = convert_legacy_store(store)
self.hooks.remove((store, hook))
def call_hook(store, msg):
# TODO: what can we do here?
return None
def add_event(evt, eid=None):
return context.add_event(evt, eid, module_src=module)
def del_event(evt):
@ -110,6 +122,7 @@ class ModuleContext:
self.del_event = del_event
self.save = save
self.send_response = send_response
self.call_hook = call_hook
def unload(self):