aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2023-12-14 18:22:32 +0800
committer苏向夜 <fu050409@163.com>2023-12-14 18:22:32 +0800
commitc559e35fb99733c60ab97e536aa10fac59766f55 (patch)
treefd47da0b270d6afb705632e1432f433c6119a6c4 /src
parentaa81ffa1770ee32103769c598531b21692985fb5 (diff)
downloadinfini-c559e35fb99733c60ab97e536aa10fac59766f55.tar.gz
infini-c559e35fb99733c60ab97e536aa10fac59766f55.zip
:sparkles: 新增原始消息传递
Diffstat (limited to 'src')
-rw-r--r--src/infini/consts/templates.py7
-rw-r--r--src/infini/event.py16
-rw-r--r--src/infini/handler.py4
-rw-r--r--src/infini/logging.py2
-rw-r--r--src/infini/matcher.py18
5 files changed, 27 insertions, 20 deletions
diff --git a/src/infini/consts/templates.py b/src/infini/consts/templates.py
index c3b979bd..a662814c 100644
--- a/src/infini/consts/templates.py
+++ b/src/infini/consts/templates.py
@@ -28,5 +28,10 @@ TEST = """from infini.matcher import matcher, MatcherEvent
def test():
event = MatcherEvent("MyRule")
- print(matcher.run(event))
+ try:
+ matcher.run(event)
+ except Exception as error:
+ return [error]
+ finally:
+ return []
"""
diff --git a/src/infini/event.py b/src/infini/event.py
index f456500a..a83c4042 100644
--- a/src/infini/event.py
+++ b/src/infini/event.py
@@ -40,4 +40,20 @@ class MessageEvent(metaclass=ABCMeta):
events.regist(cls.name, cls.output)
+class MatcherEvent:
+ """Matcher 事件"""
+
+ name: str
+ string: str
+ kwargs: dict
+
+ def __init__(self, event_name: str, string: str | None = None, **kwargs):
+ self.name = event_name
+ self.string = string or ""
+ self.kwargs = kwargs
+
+ def __repr__(self) -> str:
+ return f"<MatcherEvent [{self.name}]>"
+
+
events = Events()
diff --git a/src/infini/handler.py b/src/infini/handler.py
index 8f50fc8c..06d5c5fa 100644
--- a/src/infini/handler.py
+++ b/src/infini/handler.py
@@ -1,5 +1,5 @@
from abc import ABCMeta, abstractmethod
-from .exceptions import HydroError
+from .event import MatcherEvent
from .typing import Dict
__all__ = ["Result", "Handler"]
@@ -28,7 +28,7 @@ class Handler:
handlers.regist(cls.name, cls())
@abstractmethod
- def process(self, **kwargs) -> Result:
+ def process(self, event: MatcherEvent) -> Result:
raise NotImplementedError
diff --git a/src/infini/logging.py b/src/infini/logging.py
index 1346c7f7..72736ef7 100644
--- a/src/infini/logging.py
+++ b/src/infini/logging.py
@@ -12,7 +12,7 @@ from .settings import DEBUG
__all__ = ["logger", "error_or_exception"]
logger = multilogger(
- name="HydroRoll", payload="Core", level="DEBUG" if DEBUG else "INFO"
+ name="Infini", payload="Core", level="DEBUG" if DEBUG else "INFO"
)
current_path = Path(__file__).resolve().parent
LOG_PATH = current_path / "logs"
diff --git a/src/infini/matcher.py b/src/infini/matcher.py
index d7cfa336..7fc5b88a 100644
--- a/src/infini/matcher.py
+++ b/src/infini/matcher.py
@@ -1,22 +1,8 @@
-from .event import Events, events
+from .event import MatcherEvent, Events, events
from .handler import Handlers, Handler, handlers
from .exceptions import UnknownMatcherEvent
-class MatcherEvent:
- """Matcher 事件"""
-
- name: str
- kwargs: dict
-
- def __init__(self, name: str, **kwargs):
- self.name = name
- self.kwargs = kwargs
-
- def __repr__(self) -> str:
- return f"<MatcherEvent [{self.name}]>"
-
-
class Matcher:
"""事件处理单元"""
@@ -36,7 +22,7 @@ class Matcher:
raise UnknownMatcherEvent(f"未知的规则包: {name}")
def run(self, event: MatcherEvent) -> str:
- result = self.match(event.name).process(**event.kwargs)
+ result = self.match(event.name).process(event)
return self.events.process(
result.event, **result.kwargs if result.kwargs else event.kwargs
)