summaryrefslogtreecommitdiffstatshomepage
path: root/src/infini/handler.py
blob: 8406972b1bcf8e3cff4f74a26cb261e09c3aa360 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""Infini Handler

此类是所有规则包业务类的基类。
每个规则包业务类都需要定义一个名为 process 的抽象方法, 用于接收和处理传入的 MatcherEvent 事件,并返回一个 InfiniEvent 事件。
此外,每个规则包业务类还可以定义一个名为 priority 的类属性,用于指定该业务类的优先级。优先级越高,该业务类处理事件的顺序越靠前。
"""

from abc import ABCMeta, abstractmethod
from enum import Enum
from .event import MatcherEvent, InfiniEvent

__all__ = ["Handler", "HandlerLoadType"]


class HandlerLoadType(Enum):
    """规则包加载类型。"""

    DIR = "dir"
    NAME = "name"
    FILE = "file"
    CLASS = "class"


class Handler:
    """规则包业务基类"""

    name: str
    priority: int = 0

    def __init__(self) -> None:
        pass

    @abstractmethod
    def process(self, event: MatcherEvent) -> InfiniEvent:
        raise NotImplementedError