消息平台实体
目录
LangBot 支持多种消息平台,但每个消息平台的消息实体
格式均不相同,为了屏蔽这些差异,LangBot 具有一套统一的标准。插件开发者只需要掌握并在插件中使用此页所述的消息实体,LangBot 内部的消息处理逻辑能够自动完成消息的解析和转换。
INFO
LangBot 的消息平台实体是基于 YiriMirai 的实现改造的。
消息链
消息平台的消息
不同于用于 AI 交互的消息,消息平台的消息以消息链
的形式描述,QQ 上展示的每一个独立的消息就是一条消息链,消息链中可以包含文字
、图片
、@组件
等多种消息链组件
,例如:
这就是一个消息链,包含 一个 Plain 组件(Hello World)和 一个 Image 组件(乌萨奇)
消息链和消息链组件的定义位于pkg/platform/types/messages.py
中。
构造消息链
请先引入pkg.platform.types
包,才能使用其中的消息组件。
from pkg.platform.types import *
# 构建一个包含文字 Hello LangBot 和图片(从URL获取)的消息
msg_chain = MessageChain([
Plain("Hello LangBot"),
Image(url='https://qchatgpt.rockchin.top/langbot-logo.png')
])
# 构建一个包含 @全体成员 和文字 Hello LangBot 的消息
msg_chain = MessageChain([
AtAll(),
Plain("Hello LangBot")
])
# 构建一个包含 @指定成员 和文字 Hello LangBot 的消息
msg_chain = MessageChain([
At(123456),
Plain("Hello LangBot")
])
目前支持的消息链组件:
Source
源消息链信息,如果是从消息平台收到的消息,都会在消息链最前端包含此组件,记录消息信息Plain
纯文本消息Quote
引用消息Image
图片消息AtAll
@全体成员消息At
@指定成员消息Voice
语音消息- 需要检查消息平台支持性
Forward
转发消息- 在很多平台不受支持,不建议使用
File
文件消息
具体使用方式可以查看源码pkg/platform/types/messages.py
中的定义。
消息平台事件
这些事件不同于 LangBot 插件事件,是消息平台系统独立的一套事件系统。这些事件是 LangBot 插件事件的源事件,可以从每个 Query.message_event 取得。
消息平台事件定义位于pkg/platform/types/events.py
中。
其他实体
除了上述实体之外,还有好友 Friend
和群 Group
等实体,这些实体的定义位于pkg/platform/types/entities.py
中。 他们一般被包含于上述事件对象中,可以从中取得一些未被包含在插件事件中的信息。
向后兼容性
以 3.x 版本为基础开发的插件,均可以无缝适配 3.4 版本。但 import mirai
在新版本已经不受支持,开发插件时编辑器会报错。请做如下修改:
import mirai
改为import pkg.platform.types as mirai
- 不建议直接改成
as mirai
,建议使用import pkg.platform.types as platform_types
并将插件代码中对应的mirai.xxx
替换为platform_types.xxx
- 不建议直接改成
from mirai import *
改为from pkg.platform.types import *