New function in ModuleContext: call_hook
This commit is contained in:
parent
c86031ea32
commit
f4a80e0fda
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue
Block a user