diff options
| author | 2023-12-16 20:29:35 +0800 | |
|---|---|---|
| committer | 2023-12-16 20:29:35 +0800 | |
| commit | 8931736c9eb5fc8c5fe2eb8d6eca630b22fba5c9 (patch) | |
| tree | e09c498037bd2b1b8d06f62e30dc2dfd605cd2bf | |
| parent | 0680f2f8de507236966ed9ac3ae692f009f2de8f (diff) | |
| download | infini-8931736c9eb5fc8c5fe2eb8d6eca630b22fba5c9.tar.gz infini-8931736c9eb5fc8c5fe2eb8d6eca630b22fba5c9.zip | |
:sparkles: 更新事件方法
| -rw-r--r-- | src/infini/event.py | 57 |
1 files changed, 29 insertions, 28 deletions
diff --git a/src/infini/event.py b/src/infini/event.py index 659ae73e..7ff276d8 100644 --- a/src/infini/event.py +++ b/src/infini/event.py @@ -1,38 +1,19 @@ -from .typing import Dict -from .exceptions import UnknownMessageEvent +from abc import ABCMeta +from .register import Events -import re +__all__ = ["InfiniEvent", "MessageEvent", "WorkflowEvent", "MatcherEvent", "events"] -__all__ = ["MessageEvent", "events"] - -class InfiniEvent: +class InfiniEvent(metaclass=ABCMeta): """Inifni 事件基类""" name: str + def __repr__(self) -> str: + raise NotImplementedError -class Events: - """事件集合""" - - _events: Dict[str, str] = {} - - def regist(self, name: str, output: str) -> None: - self._events[name.lower()] = output - - def process(self, name: str, **kwargs) -> str: - if string := self._events.get(name.lower()): - return self._format(string, **kwargs) - raise UnknownMessageEvent(f"事件[{name.lower()}]不存在!") - - def _format(self, string: str, **kwargs): - pattern = r"{(.*?)}" - values = re.findall(pattern, string) - for value in values: - kwarg = kwargs.get(value) - value = kwarg if kwarg else "" - string = re.sub(pattern, value, string) - return string + def get_event_name(self) -> str: + return self.name class MessageEvent(InfiniEvent): @@ -54,6 +35,13 @@ class WorkflowEvent(InfiniEvent): def __repr__(self) -> str: return f"<WorkflowEvent [{self.name}]>" + def __eq__(self, __value: object) -> bool: + if __value is str: + return self.name == __value + if isinstance(__value, WorkflowEvent): + return self.name == __value.name and self.kwargs == __value.kwargs + return False + class MatcherEvent(InfiniEvent): """Matcher 事件""" @@ -63,13 +51,26 @@ class MatcherEvent(InfiniEvent): string: str kwargs: dict - def __init__(self, event_name: str, string: str | None = None, **kwargs): + def __init__( + self, + event_name: str, + prefix: str | None = None, + string: str | None = None, + **kwargs, + ): self.name = event_name + self.prefix = prefix or "" self.string = string or "" self.kwargs = kwargs def __repr__(self) -> str: return f"<MatcherEvent [{self.name}]>" + def get_prefix(self): + return self.prefix + + def get_plain_text(self): + return self.string + events = Events() |
