melobot.plugin

插件层组件

class melobot.plugin.PluginPlanner[源代码]

基类:object

插件管理器类

用于声明一个插件,并为插件添加功能

__init__(version: str, flows: list[Flow] | None = None, shares: list[SyncShare | AsyncShare] | None = None, funcs: list[Callable] | None = None, *, info: PluginInfo | None = None) None[源代码]

插件管理器初始化

参数:
  • version (str) -- 版本号

  • flows (list[Flow] | None) -- 事件流列表。可以先指定为空,后续使用 use() 绑定

  • shares (list[SyncShare | AsyncShare] | None) -- 共享对象列表。可以先指定为空,后续使用 use() 绑定

  • funcs (list[Callable] | None) -- 导出函数列表。可以先指定为空,后续使用 use() 绑定

  • info (PluginInfo | None) -- 插件信息

返回类型:

None

on(*periods: PluginLifeSpan) Callable[[AsyncCallable[P, None]], AsyncCallable[P, None]][源代码]

注册一个 hook

参数:

periods (PluginLifeSpan) -- 要绑定的 hook 类型

返回:

装饰器

返回类型:

Callable[[AsyncCallable[~P, None]], AsyncCallable[~P, None]]

use(obj: T) T[源代码]

装饰器

绑定一个组件(流,共享对象,导出函数),标记插件创建后使用该组件。

参数:

obj (T) -- 可用的组件

返回:

被绑定的组件本身

返回类型:

T

add_flow(*flows: Flow) None[源代码]

在运行期为指定的插件添加一批处理流

PluginLifeSpan.INITED 及其之后的阶段可以使用

注意:不会立即生效,通常会在下一次事件处理前生效。 因此返回时不代表已经添加了处理流,只是增添了添加处理流的任务

参数:

flows (Flow) -- 处理流

返回类型:

None

remove_flow(*flows: Flow) None[源代码]

在运行期为指定的插件移除一批处理流

如果插件没有启用对应的处理流,不会发出异常,而是忽略

PluginLifeSpan.INITED 及其之后的阶段可以使用

注意:不会立即生效,通常会在下一次事件处理前生效。 因此返回时不代表已经移除了处理流,只是增添了移除处理流的任务

参数:

flows (Flow) -- 处理流

返回类型:

None

class melobot.plugin.PluginInfo[源代码]

基类:object

插件信息类,用于添加描述信息

__init__(version: str = '', desc: str = '', docs: Path | None = None, keywords: list[str] | None = None, url: str = '', author: str = '') None
参数:
返回类型:

None

class melobot.plugin.PluginLifeSpan[源代码]

基类:Enum

插件生命周期的枚举

INITED = 'i'
class melobot.plugin.AsyncShare[源代码]

基类:Generic[T], Locatable, AttrsReprable

异步共享对象

__init__(name: str, reflector: AsyncCallable[(), T] | None = None, callabck: AsyncCallable[T, None] | None = None, static: bool = False) None[源代码]

初始化异步共享对象

参数:
  • name (str) -- 异步共享对象的名称

  • reflector (AsyncCallable[(), T] | None) -- 获取共享值的异步可调用方法

  • callabck (AsyncCallable[(~T,), None] | None) -- 修改共享值的异步可调用方法

  • static (bool) -- 是否使用静态模式

返回类型:

None

__call__(func: AsyncCallable[(), T]) AsyncCallable[(), T][源代码]

绑定获取共享值的异步方法的装饰器,如果未在初始化时绑定

参数:

func (AsyncCallable[(), T]) -- 被绑定的异步可调用方法

返回:

func 原值

返回类型:

AsyncCallable[(), T]

setter(func: AsyncCallable[T, None]) AsyncCallable[T, None][源代码]

绑定修改共享值的异步方法的装饰器,如果未在初始化时绑定

参数:

func (AsyncCallable[(~T,), None]) -- 被绑定的异步可调用方法

返回:

func 原值

返回类型:

AsyncCallable[(~T,), None]

async get() T[源代码]

获取异步共享值

返回:

异步共享值

返回类型:

T

async set(val: T) None[源代码]

设置异步共享值

参数:

val (T) -- 新的异步共享值

返回类型:

None

class melobot.plugin.SyncShare[源代码]

基类:Generic[T], Locatable, AttrsReprable

同步共享对象

__init__(name: str, reflector: Callable[[], T] | None = None, callabck: Callable[[T], None] | None = None, static: bool = False) None[源代码]

初始化同步共享对象

参数:
  • name (str) -- 同步共享对象的名称

  • reflector (Callable[[], T] | None) -- 获取共享值的可调用方法

  • callabck (Callable[[T], None] | None) -- 修改共享值的可调用方法

  • static (bool) -- 是否使用静态模式

返回类型:

None

__call__(func: Callable[[], T]) Callable[[], T][源代码]

绑定获取共享值的方法的装饰器,如果未在初始化时绑定

参数:

func (Callable[[], T]) -- 被绑定的可调用方法

返回:

func 原值

返回类型:

Callable[[], T]

setter(func: Callable[[T], None]) Callable[[T], None][源代码]

绑定修改共享值的方法的装饰器,如果未在初始化时绑定

参数:

func (Callable[[T], None]) -- 被绑定的可调用方法

返回:

func 原值

返回类型:

Callable[[T], None]

get() T[源代码]

获取共享值

返回:

共享值

返回类型:

T

set(val: T) None[源代码]

设置共享值

参数:

val (T) -- 新的共享值

返回类型:

None