2022-01-22 15:23:07 +08:00
|
|
|
|
"""本模块定义插件对象。
|
|
|
|
|
|
|
|
|
|
FrontMatter:
|
|
|
|
|
sidebar_position: 3
|
|
|
|
|
description: nonebot.plugin.plugin 模块
|
|
|
|
|
"""
|
2021-11-08 01:02:35 +08:00
|
|
|
|
from types import ModuleType
|
|
|
|
|
from dataclasses import field, dataclass
|
2022-06-20 15:49:53 +08:00
|
|
|
|
from typing import TYPE_CHECKING, Any, Set, Dict, Type, Optional
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel
|
2021-11-08 01:02:35 +08:00
|
|
|
|
|
2021-11-11 17:33:30 +08:00
|
|
|
|
from nonebot.matcher import Matcher
|
2021-11-08 01:02:35 +08:00
|
|
|
|
|
2022-12-17 17:04:38 +08:00
|
|
|
|
# FIXME: backport for nonebug
|
|
|
|
|
from . import _plugins as plugins # nopycln: import
|
2022-01-15 21:27:43 +08:00
|
|
|
|
|
2021-12-20 00:28:17 +08:00
|
|
|
|
if TYPE_CHECKING:
|
|
|
|
|
from .manager import PluginManager
|
|
|
|
|
|
2021-11-08 01:02:35 +08:00
|
|
|
|
|
|
|
|
|
@dataclass(eq=False)
|
2022-06-20 15:49:53 +08:00
|
|
|
|
class PluginMetadata:
|
|
|
|
|
"""插件元信息,由插件编写者提供"""
|
|
|
|
|
|
|
|
|
|
name: str
|
|
|
|
|
"""插件可阅读名称"""
|
|
|
|
|
description: str
|
|
|
|
|
"""插件功能介绍"""
|
|
|
|
|
usage: str
|
|
|
|
|
"""插件使用方法"""
|
|
|
|
|
config: Optional[Type[BaseModel]] = None
|
|
|
|
|
"""插件配置项"""
|
|
|
|
|
extra: Dict[Any, Any] = field(default_factory=dict)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(eq=False)
|
|
|
|
|
class Plugin:
|
2021-11-08 01:02:35 +08:00
|
|
|
|
"""存储插件信息"""
|
2021-11-22 23:21:26 +08:00
|
|
|
|
|
2021-11-08 01:02:35 +08:00
|
|
|
|
name: str
|
2022-06-20 15:49:53 +08:00
|
|
|
|
"""插件索引标识,NoneBot 使用 文件/文件夹 名称作为标识符"""
|
2021-11-08 01:02:35 +08:00
|
|
|
|
module: ModuleType
|
2022-01-22 15:23:07 +08:00
|
|
|
|
"""插件模块对象"""
|
2021-11-08 01:02:35 +08:00
|
|
|
|
module_name: str
|
2022-01-22 15:23:07 +08:00
|
|
|
|
"""点分割模块路径"""
|
2021-12-20 00:28:17 +08:00
|
|
|
|
manager: "PluginManager"
|
2022-01-22 15:23:07 +08:00
|
|
|
|
"""导入该插件的插件管理器"""
|
2021-11-08 01:02:35 +08:00
|
|
|
|
matcher: Set[Type[Matcher]] = field(default_factory=set)
|
2023-03-29 12:22:50 +08:00
|
|
|
|
"""插件加载时定义的 `Matcher`"""
|
2021-11-08 01:02:35 +08:00
|
|
|
|
parent_plugin: Optional["Plugin"] = None
|
2022-01-22 15:23:07 +08:00
|
|
|
|
"""父插件"""
|
2021-11-08 01:02:35 +08:00
|
|
|
|
sub_plugins: Set["Plugin"] = field(default_factory=set)
|
2022-01-22 15:23:07 +08:00
|
|
|
|
"""子插件集合"""
|
2022-06-20 15:49:53 +08:00
|
|
|
|
metadata: Optional[PluginMetadata] = None
|