Added check and match module defined functions to hooks
This commit is contained in:
parent
11bdf8d0a1
commit
36cfdd8861
|
@ -43,7 +43,7 @@ class Abstract:
|
||||||
"""Abstract class for Hook implementation"""
|
"""Abstract class for Hook implementation"""
|
||||||
|
|
||||||
def __init__(self, call, data=None, channels=None, servers=None, mtimes=-1,
|
def __init__(self, call, data=None, channels=None, servers=None, mtimes=-1,
|
||||||
end_call=None):
|
end_call=None, check=None, match=None):
|
||||||
"""Create basis of the hook
|
"""Create basis of the hook
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
|
@ -58,6 +58,8 @@ class Abstract:
|
||||||
|
|
||||||
assert callable(call), call
|
assert callable(call), call
|
||||||
assert end_call is None or callable(end_call), end_call
|
assert end_call is None or callable(end_call), end_call
|
||||||
|
assert check is None or callable(check), check
|
||||||
|
assert match is None or callable(match), match
|
||||||
assert isinstance(channels, list), channels
|
assert isinstance(channels, list), channels
|
||||||
assert isinstance(servers, list), servers
|
assert isinstance(servers, list), servers
|
||||||
assert type(mtimes) is int, mtimes
|
assert type(mtimes) is int, mtimes
|
||||||
|
@ -65,6 +67,9 @@ class Abstract:
|
||||||
self.call = call
|
self.call = call
|
||||||
self.data = data
|
self.data = data
|
||||||
|
|
||||||
|
self.mod_check = check
|
||||||
|
self.mod_match = match
|
||||||
|
|
||||||
# TODO: find a way to have only one list: a limit is server + channel, not only server or channel
|
# TODO: find a way to have only one list: a limit is server + channel, not only server or channel
|
||||||
self.channels = channels
|
self.channels = channels
|
||||||
self.servers = servers
|
self.servers = servers
|
||||||
|
@ -96,11 +101,11 @@ class Abstract:
|
||||||
|
|
||||||
|
|
||||||
def check(self, data1):
|
def check(self, data1):
|
||||||
return True
|
return self.mod_check(data1) if self.mod_check is not None else True
|
||||||
|
|
||||||
|
|
||||||
def match(self, data1):
|
def match(self, data1):
|
||||||
return True
|
return self.mod_match(data1) if self.mod_match is not None else True
|
||||||
|
|
||||||
|
|
||||||
def run(self, data1, *args):
|
def run(self, data1, *args):
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from nemubot.hooks.message import Message
|
from nemubot.hooks.message import Message
|
||||||
|
from nemubot.hooks.abstract import Abstract
|
||||||
from nemubot.hooks.keywords import NoKeyword
|
from nemubot.hooks.keywords import NoKeyword
|
||||||
from nemubot.hooks.keywords.abstract import Abstract as AbstractKeywords
|
from nemubot.hooks.keywords.abstract import Abstract as AbstractKeywords
|
||||||
from nemubot.hooks.keywords.dict import Dict as DictKeywords
|
from nemubot.hooks.keywords.dict import Dict as DictKeywords
|
||||||
|
@ -61,5 +62,6 @@ class Command(Message):
|
||||||
else:
|
else:
|
||||||
return (
|
return (
|
||||||
(self.name is None or msg.cmd == self.name) and
|
(self.name is None or msg.cmd == self.name) and
|
||||||
(self.regexp is None or re.match(self.regexp, msg.cmd))
|
(self.regexp is None or re.match(self.regexp, msg.cmd)) and
|
||||||
|
Abstract.match(self, msg)
|
||||||
)
|
)
|
||||||
|
|
|
@ -46,4 +46,4 @@ class Message(Abstract):
|
||||||
if not isinstance(msg, nemubot.message.text.Text):
|
if not isinstance(msg, nemubot.message.text.Text):
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return self.regexp is None or re.match(self.regexp, msg.message)
|
return (self.regexp is None or re.match(self.regexp, msg.message)) and super().match(msg)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user