mirror of
https://github.com/nonebot/nonebot2.git
synced 2024-11-25 09:35:03 +08:00
28 lines
731 B
Python
28 lines
731 B
Python
|
import abc
|
||
|
from collections import defaultdict
|
||
|
from typing import TYPE_CHECKING, List, Type, Mapping, MutableMapping
|
||
|
|
||
|
if TYPE_CHECKING:
|
||
|
from .matcher import Matcher
|
||
|
|
||
|
|
||
|
class MatcherProvider(abc.ABC, MutableMapping[int, List[Type["Matcher"]]]):
|
||
|
"""事件响应器存储器基类
|
||
|
|
||
|
参数:
|
||
|
matchers: 当前存储器中已有的事件响应器
|
||
|
"""
|
||
|
|
||
|
@abc.abstractmethod
|
||
|
def __init__(self, matchers: Mapping[int, List[Type["Matcher"]]]):
|
||
|
raise NotImplementedError
|
||
|
|
||
|
|
||
|
class _DictProvider(defaultdict, MatcherProvider):
|
||
|
def __init__(self, matchers: Mapping[int, List[Type["Matcher"]]]):
|
||
|
super().__init__(list, matchers)
|
||
|
|
||
|
|
||
|
DEFAULT_PROVIDER_CLASS = _DictProvider
|
||
|
"""默认存储器类型"""
|