melobot.adapter

适配器层组件

class melobot.adapter.Adapter[源代码]

基类:BetterABC, Generic[EventFactoryT, OutputFactoryT, EchoFactoryT, ActionT, InSourceT, OutSourceT], Hookable[AdapterLifeSpan]

适配器基类

变量:

protocol (LiteralString) -- 适配器所使用的协议

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

注册一个 hook

参数:

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

返回:

装饰器

返回类型:

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

get_isrcs(filter: Callable[[InSourceT], bool]) set[InSourceT][源代码]

获取与当前适配器匹配的所有输入源

参数:

filter (Callable[[InSourceT], bool]) -- 过滤函数,为 True 时保留输入源

返回:

输入源的集合

返回类型:

set[InSourceT]

get_osrcs(filter: Callable[[OutSourceT], bool]) set[OutSourceT][源代码]

获取与当前适配器匹配的所有输出源

参数:

filter (Callable[[OutSourceT], bool]) -- 过滤函数,为 True 时保留输出源

返回:

输出源的集合

返回类型:

set[OutSourceT]

filter_out(filter: Callable[[OutSourceT], bool]) _GeneratorContextManager[Callable[[OutSourceT], bool]][源代码]

上下文管理器,提供由 filter 控制输出的输出上下文

参数:

filter (Callable[[OutSourceT], bool]) -- 过滤函数,为 True 时允许该输出源输出

返回类型:

_GeneratorContextManager[Callable[[OutSourceT], bool]]

async call_output(action: ActionT) tuple[ActionHandle, ...][源代码]

输出行为,并返回各个输出源返回的 ActionHandle 组成的元组

适配器开发者的适配器子类可以重写此方法,以实现自定义功能

但子类实现中必须调用原始方法: super().call_output(...)

参数:

action (ActionT) -- 行为

返回:

ActionHandle 元组

返回类型:

tuple[ActionHandle, ...]

class melobot.adapter.AdapterLifeSpan[源代码]

基类:Enum

适配器生命周期阶段的枚举

BEFORE_EVENT_HANDLE = 'beh'
BEFORE_ACTION_EXEC = 'bae'
STARTED = 'sta'
STOPPED = 'sto'
class melobot.adapter.AbstractEventFactory[源代码]

基类:BetterABC, Generic[InPacketT, EventT]

抽象事件工厂类

abstract async create(packet: InPacketT) EventT[源代码]

InPacket 对象转换为 Event 对象的方法

参数:

packet (InPacketT) -- 输入包

返回:

事件

返回类型:

EventT

class melobot.adapter.AbstractOutputFactory[源代码]

基类:BetterABC, Generic[OutPacketT, ActionT]

抽象输出工厂类

abstract async create(action: ActionT) OutPacketT[源代码]

Action 对象转换为 OutPacket 对象的方法

参数:
  • packet -- 行为

  • action (ActionT)

返回:

输出包

返回类型:

OutPacketT

class melobot.adapter.AbstractEchoFactory[源代码]

基类:BetterABC, Generic[EchoPacketT, EchoT]

抽象回应工厂类

abstract async create(packet: EchoPacketT) EchoT | None[源代码]

EchoPacket 对象转换为 Echo 对象的方法

参数:

packet (EchoPacketT) -- 回应包

返回:

回应或空值

返回类型:

EchoT | None

实体基类

class melobot.adapter.Event[源代码]

基类:AttrsReprable

事件基类

变量:
  • time (float) -- 时间戳

  • id (str) -- id 标识

  • protocol (LiteralString | None) -- 遵循的协议,为空则协议无关

  • contents (Sequence[Content]) -- 附加的通用内容序列

  • scope (Hashable | None) -- 所在的域,可空

class melobot.adapter.Action[源代码]

基类:AttrsReprable

行为基类

变量:
  • time (float) -- 时间戳

  • id (str) -- id 标识

  • protocol (LiteralString | None) -- 遵循的协议,为空则协议无关

  • contents (Sequence[Content]) -- 附加的通用内容序列

  • scope (Hashable | None) -- 所在的域,可空

  • trigger (Event | None) -- 触发该行为的事件,为空表明不由事件触发

class melobot.adapter.Echo[源代码]

基类:AttrsReprable

回应基类

变量:
  • time (float) -- 时间戳

  • id (str) -- id 标识

  • protocol (LiteralString | None) -- 遵循的协议,为空则协议无关

  • scope (Hashable | None) -- 所在的域,可空

  • ok (bool) -- 回应是否成功

  • status (int) -- 回应状态码

  • prompt (str) -- 回应提示语

  • data (Any) -- 回应数据

行为实体相关部件

class melobot.adapter.ActionHandle[源代码]

基类:Generic[ActionRetT]

行为操作句柄

变量:
  • action (Action) -- 操作包含的行为对象

  • status (Literal["PENDING", "EXECUTING", "FINISHED"]) -- 操作的状态。分别对应:未执行、执行中、执行完成

  • out_src (AbstractOutSource) -- 执行操作的输出源对象

__await__() Generator[Any, Any, ActionRetT][源代码]

本对象实现 __await__ 接口,因此可等待。返回本操作对应的回应数据

返回类型:

Generator[Any, Any, ActionRetT]

class melobot.adapter.ActionChain[源代码]

基类:object

行为链

unfold(ctx: Context[T], val: T) Self[源代码]

指定链后续的步骤中在 ctx 类别的上下文中执行,上下文值为 val

参数:
  • ctx (Context[T]) -- 上下文类别

  • val (T) -- 上下文的值

返回:

自身,因此支持链式调用

返回类型:

Self

add(*handles: Awaitable[tuple[ActionHandle, ...]], ret_when: Literal['FIRST_COMPLETED', 'FIRST_EXCEPTION', 'ALL_COMPLETED'] = 'ALL_COMPLETED') Self[源代码]

在链的步骤中添加一组行为

参数:
  • handles (Awaitable[tuple[ActionHandle, ...]]) -- 返回行为操作句柄的可等待对象

  • ret_when (Literal['FIRST_COMPLETED', 'FIRST_EXCEPTION', 'ALL_COMPLETED']) -- 指定这一组行为的等待模式

返回:

自身,因此支持链式调用

返回类型:

Self

sleep(interval: float) Self[源代码]

在链的步骤中添加指定时长的等待

参数:

interval (float) -- 等待时长

返回:

自身,因此支持链式调用

返回类型:

Self

async run() None[源代码]

顺序执行链的所有步骤

返回类型:

None

melobot.adapter.open_chain() Generator[ActionChain, None, None][源代码]

创建行为链的上下文管理器

Yield:

行为链对象

返回类型:

Generator[ActionChain, None, None]

通用实体内容

class melobot.adapter.content.Content[源代码]

基类:object

通用内容基类

class melobot.adapter.content.TextContent[源代码]

基类:Content

文本内容

__init__(text: str) None[源代码]

初始化文本内容

参数:

text (str) -- 文本

返回类型:

None

class melobot.adapter.content.MediaContent[源代码]

基类:Content

多媒体内容

__init__(*, name: str, url: str | None = None, raw: bytes | None = None, mimetype: str | None = None) None[源代码]

初始化多媒体内容

参数:
  • name (str) -- 多媒体内容的名称

  • raw (bytes | None) -- 多媒体内容的二进制内容

  • url (str | None) -- 多媒体内容的网络地址(和 raw 参数二选一)

  • mimetype (str | None) -- 多媒体内容的 mimetype,为空则根据 name 自动检测

返回类型:

None

class melobot.adapter.content.ImageContent[源代码]

基类:MediaContent

图像内容,初始化方法参考基类

class melobot.adapter.content.AudioContent[源代码]

基类:MediaContent

音频内容,初始化方法参考基类

class melobot.adapter.content.VoiceContent[源代码]

基类:AudioContent

语音内容,初始化方法参考基类

class melobot.adapter.content.VideoContent[源代码]

基类:MediaContent

视频内容,初始化方法参考基类

class melobot.adapter.content.FileContent[源代码]

基类:Content

文件内容

__init__(name: str, flag: Hashable) None[源代码]

初始化文件内容

参数:
  • name (str) -- 文件名

  • flag (Hashable) -- 文件的唯一标记

返回类型:

None

class melobot.adapter.content.ReferContent[源代码]

基类:Content

引用内容

__init__(prompt: str, flag: Hashable, contents: Sequence[Content]) None[源代码]

初始化引用内容

参数:
  • prompt (str) -- 引用的文本提示

  • flag (Hashable) -- 引用的唯一标记

  • contents (Sequence[Content]) -- 附加的通用内容序列

返回类型:

None

class melobot.adapter.content.ResourceContent[源代码]

基类:Content

资源内容

__init__(name: str, url: str) None[源代码]

初始化资源内容

参数:
  • name (str) -- 名称

  • url (str) -- 网络地址

返回类型:

None

通用输出方法

async melobot.adapter.generic.send_text(text: str) tuple[ActionHandle, ...][源代码]

通用文本输出方法

参数:

text (str)

返回类型:

tuple[ActionHandle, ...]

async melobot.adapter.generic.send_media(name: str, raw: bytes | None = None, url: str | None = None, mimetype: str | None = None) tuple[ActionHandle, ...][源代码]

通用媒体内容输出方法

参数:
  • name (str)

  • raw (bytes | None)

  • url (str | None)

  • mimetype (str | None)

返回类型:

tuple[ActionHandle, ...]

async melobot.adapter.generic.send_image(name: str, raw: bytes | None = None, url: str | None = None, mimetype: str | None = None) tuple[ActionHandle, ...][源代码]

通用图像内容输出方法

参数:
  • name (str)

  • raw (bytes | None)

  • url (str | None)

  • mimetype (str | None)

返回类型:

tuple[ActionHandle, ...]

async melobot.adapter.generic.send_audio(name: str, raw: bytes | None = None, url: str | None = None, mimetype: str | None = None) tuple[ActionHandle, ...][源代码]

通用音频内容输出方法

参数:
  • name (str)

  • raw (bytes | None)

  • url (str | None)

  • mimetype (str | None)

返回类型:

tuple[ActionHandle, ...]

async melobot.adapter.generic.send_voice(name: str, raw: bytes | None = None, url: str | None = None, mimetype: str | None = None) tuple[ActionHandle, ...][源代码]

通用语音内容输出方法

参数:
  • name (str)

  • raw (bytes | None)

  • url (str | None)

  • mimetype (str | None)

返回类型:

tuple[ActionHandle, ...]

async melobot.adapter.generic.send_video(name: str, raw: bytes | None = None, url: str | None = None, mimetype: str | None = None) tuple[ActionHandle, ...][源代码]

通用视频内容输出方法

参数:
  • name (str)

  • raw (bytes | None)

  • url (str | None)

  • mimetype (str | None)

返回类型:

tuple[ActionHandle, ...]

async melobot.adapter.generic.send_file(name: str, path: str | PathLike[str]) tuple[ActionHandle, ...][源代码]

通用文件输出方法

参数:
返回类型:

tuple[ActionHandle, ...]

async melobot.adapter.generic.send_refer(event: Event, contents: Sequence[Content] | None = None) tuple[ActionHandle, ...][源代码]

通用过往事件引用输出方法

参数:
返回类型:

tuple[ActionHandle, ...]

async melobot.adapter.generic.send_resource(name: str, url: str) tuple[ActionHandle, ...][源代码]

通用其他资源输出方法

参数:
返回类型:

tuple[ActionHandle, ...]