diff options
| author | 2023-12-14 18:22:32 +0800 | |
|---|---|---|
| committer | 2023-12-14 18:22:32 +0800 | |
| commit | c559e35fb99733c60ab97e536aa10fac59766f55 (patch) | |
| tree | fd47da0b270d6afb705632e1432f433c6119a6c4 /src | |
| parent | aa81ffa1770ee32103769c598531b21692985fb5 (diff) | |
| download | infini-c559e35fb99733c60ab97e536aa10fac59766f55.tar.gz infini-c559e35fb99733c60ab97e536aa10fac59766f55.zip | |
:sparkles: 新增原始消息传递
Diffstat (limited to 'src')
| -rw-r--r-- | src/infini/consts/templates.py | 7 | ||||
| -rw-r--r-- | src/infini/event.py | 16 | ||||
| -rw-r--r-- | src/infini/handler.py | 4 | ||||
| -rw-r--r-- | src/infini/logging.py | 2 | ||||
| -rw-r--r-- | src/infini/matcher.py | 18 |
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 ) |
