melobot.plugin¶
插件层组件¶
- class melobot.plugin.PluginPlanner[源代码]¶
-
插件管理器类
用于声明一个插件,并为插件添加功能
- __init__(version: str, flows: Iterable[Flow] | None = None, shares: Iterable[AsyncShare | SyncShare] | None = None, funcs: Iterable[Callable] | None = None, auto_import: list[str] | bool = False, *, info: PluginInfo | None = None) None [源代码]¶
插件管理器初始化
- 参数:
version (str) -- 版本号
shares (Iterable[AsyncShare | SyncShare] | None) -- 共享对象(需要在本插件内定义)。可以先指定空,后续用
use()
绑定funcs (Iterable[Callable] | None) -- 导出函数(需要在本插件内定义,提供方法是未定义行为)。可以先指定空,后续用
use()
绑定auto_import (list[str] | bool) --
需要自动导入的模块的路径列表(相对路径以插件目录为基准),该参数对动态插件无效。 如果为 True 导入插件目录下所有模块,此时只会导入 .py 模块。 如果你需要导入 .{pyc,pyd,so,...} 等其他可加载模块,请自行提供列表。自行提供列表时的一些提示:
不要包含目录路径,这永远没有效果
建议使用
glob.glob()
或pathlib.Path.glob()
方法获取路径,而不是手动拼接或查找一个模块在加载时,其向上到插件目录的所有父目录的 __init__.{pyc,pyd,so,py...} 都会被自动加载, 此时不需要手动提供 __init__.{pyc,pyd,so,py...} 文件。加载时的扩展名优先级请查看
MODULE_EXTS
(优先级从高到低,且与操作系统平台有关)如果一个目录中只有 __init__.{pyc,pyd,so,py...} 文件,此时只能手动提供
info (PluginInfo | None) -- 插件信息
- 返回类型:
None
基类:
Generic
[T
],LocateMixin
,AttrReprMixin
异步共享对象
初始化异步共享对象
- 参数:
name (str) -- 异步共享对象的名称
reflector (AsyncCallable[(), T] | None) -- 获取共享值的异步可调用方法
callabck (AsyncCallable[(~T,), None] | None) -- 修改共享值的异步可调用方法
static (bool) -- 是否使用静态模式
- 返回类型:
None
绑定获取共享值的异步方法的装饰器,如果未在初始化时绑定
- 参数:
func (AsyncCallable[(), T]) -- 被绑定的异步可调用方法
- 返回:
对应的异步共享对象
- 返回类型:
AsyncShare[T]
绑定修改共享值的异步方法的装饰器,如果未在初始化时绑定
- 参数:
func (AsyncCallable[(~T,), None]) -- 被绑定的异步可调用方法
- 返回:
对应的异步共享对象
- 返回类型:
AsyncShare[T]
获取异步共享值
- 返回:
异步共享值
- 返回类型:
T
设置异步共享值
- 参数:
val (T) -- 新的异步共享值
- 返回类型:
None
基类:
Generic
[T
],LocateMixin
,AttrReprMixin
同步共享对象
初始化同步共享对象
绑定修改共享值的方法的装饰器,如果未在初始化时绑定
获取共享值
- 返回:
共享值
- 返回类型:
T
设置共享值
- 参数:
val (T) -- 新的共享值
- 返回类型:
None