# 消息平台实体

Source: https://langbot.app/docs/zh/plugin/dev/apis/messages

LangBot 支持多种消息平台，每个消息平台的`消息实体`格式均不相同。为了屏蔽这些差异，我们实现了一套统一的标准。插件开发者只需要掌握并在插件中使用此页所述的消息实体，LangBot 内部的消息处理逻辑能够自动完成消息的解析和转换。

## 消息链

消息平台的`消息`不同于用于 AI 交互的消息，消息平台的消息以`消息链`的形式描述，QQ 上展示的每一个独立的消息就是一条消息链，消息链中可以包含`文字`、`图片`、`@组件`等多种`消息链组件`，例如：

![](https://langbot.app/docs/images/zh/plugin/dev/apis/plugin_dev_messages_01.png)

这就是一个消息链，包含 一个 Plain 组件（Hello World）和 一个 Image 组件（乌萨奇）

消息链和消息链组件的定义位于`langbot_plugin.api.entities.builtin.platform.message`中。

### 构造消息链

请先引入`langbot_plugin.api.entities.builtin.platform.message`包，才能使用其中的消息组件。

```python
from langbot_plugin.api.entities.builtin.platform.message import *

# 构建一个包含文字 Hello LangBot 和图片（从URL获取）的消息
msg_chain = MessageChain([
    Plain(text="Hello LangBot"),
    Image(url='https://qchatgpt.rockchin.top/langbot-logo.png')
])

# 构建一个包含 @全体成员 和文字 Hello LangBot 的消息
msg_chain = MessageChain([
    AtAll(),
    Plain(text="Hello LangBot")
])

# 构建一个包含 @指定成员 和文字 Hello LangBot 的消息
msg_chain = MessageChain([
    At(target=123456),
    Plain(text="Hello LangBot")
])
```

目前支持的消息链组件：

- `Source` 源消息链信息，如果是从消息平台收到的消息，都会在消息链最前端包含此组件，记录消息信息
- `Plain` 纯文本消息
- `Quote` 引用消息
- `Image` 图片消息
- `AtAll` @全体成员消息
- `At` @指定成员消息
- `Voice` 语音消息
  - 需要检查消息平台支持性
- `Forward` 转发消息
  - 在很多平台不受支持，不建议使用
- `File` 文件消息

创建组件时，须使用具名参数传入。具体使用方式可以查看源码`langbot_plugin.api.entities.builtin.platform.message`中的定义。

## 其他实体

除了上述实体之外，还有`好友 Friend`和`群 Group`等实体，这些实体的定义位于`langbot_plugin.api.entities.builtin.platform.entities`中。

## 平台 API

查询用户、管理群组和调用平台专有接口，请使用[平台 API](https://langbot.app/docs/zh/plugin/dev/apis/platform.md)。运行器使用相同的 `self.plugin` 入口，当前会话回复使用 `ctx.reply()`。
