New function in ModuleContext: call_hook
This commit is contained in:
parent
c86031ea32
commit
f4a80e0fda
3 changed files with 30 additions and 2 deletions
|
|
@ -19,6 +19,7 @@
|
||||||
"""Progressive display of very long messages"""
|
"""Progressive display of very long messages"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import sys
|
||||||
|
|
||||||
from nemubot.message import Text, DirectAsk
|
from nemubot.message import Text, DirectAsk
|
||||||
from nemubot.hooks import hook
|
from nemubot.hooks import hook
|
||||||
|
|
@ -134,6 +135,17 @@ class Response:
|
||||||
return Text(self.get_message(maxlen),
|
return Text(self.get_message(maxlen),
|
||||||
server=None, to=self.receivers)
|
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):
|
def get_message(self, maxlen):
|
||||||
if self.alone and len(self.messages) > 1:
|
if self.alone and len(self.messages) > 1:
|
||||||
self.alone = False
|
self.alone = False
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class Abstract:
|
||||||
|
|
||||||
"""This class represents an abstract message"""
|
"""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
|
"""Initialize an abstract message
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
|
|
@ -59,7 +59,10 @@ class Abstract:
|
||||||
@property
|
@property
|
||||||
def channel(self):
|
def channel(self):
|
||||||
# TODO: this is for legacy modules
|
# 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
|
@property
|
||||||
def nick(self):
|
def nick(self):
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,15 @@ class ModuleContext:
|
||||||
store = convert_legacy_store(store)
|
store = convert_legacy_store(store)
|
||||||
self.hooks.remove((store, hook))
|
self.hooks.remove((store, hook))
|
||||||
return context.hooks.del_hook(hook, store)
|
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):
|
def add_event(evt, eid=None):
|
||||||
return context.add_event(evt, eid, module_src=module)
|
return context.add_event(evt, eid, module_src=module)
|
||||||
def del_event(evt):
|
def del_event(evt):
|
||||||
|
|
@ -93,6 +102,9 @@ class ModuleContext:
|
||||||
def del_hook(store, hook):
|
def del_hook(store, hook):
|
||||||
store = convert_legacy_store(store)
|
store = convert_legacy_store(store)
|
||||||
self.hooks.remove((store, hook))
|
self.hooks.remove((store, hook))
|
||||||
|
def call_hook(store, msg):
|
||||||
|
# TODO: what can we do here?
|
||||||
|
return None
|
||||||
def add_event(evt, eid=None):
|
def add_event(evt, eid=None):
|
||||||
return context.add_event(evt, eid, module_src=module)
|
return context.add_event(evt, eid, module_src=module)
|
||||||
def del_event(evt):
|
def del_event(evt):
|
||||||
|
|
@ -110,6 +122,7 @@ class ModuleContext:
|
||||||
self.del_event = del_event
|
self.del_event = del_event
|
||||||
self.save = save
|
self.save = save
|
||||||
self.send_response = send_response
|
self.send_response = send_response
|
||||||
|
self.call_hook = call_hook
|
||||||
|
|
||||||
|
|
||||||
def unload(self):
|
def unload(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue