# 消息段类型
- [纯文本](#纯文本)
- [QQ 表情](#qq-表情)
- [图片](#图片)
- [语音](#语音)
- [短视频](#短视频)
- [@某人](#某人)
- [猜拳魔法表情](#猜拳魔法表情)
- [掷骰子魔法表情](#掷骰子魔法表情)
- [窗口抖动(戳一戳) ](#窗口抖动戳一戳-badge-text发)
- [戳一戳](#戳一戳)
- [匿名发消息 ](#匿名发消息-badge-text发)
- [链接分享](#链接分享)
- [推荐好友](#推荐好友)
- [推荐群](#推荐群)
- [位置](#位置)
- [音乐分享 ](#音乐分享-badge-text发)
- [音乐自定义分享 ](#音乐自定义分享-badge-text发)
- [回复](#回复)
- [合并转发 ](#合并转发-badge-text收)
- [合并转发节点 ](#合并转发节点-badge-text发)
- [合并转发自定义节点](#合并转发自定义节点)
- [XML 消息](#xml-消息)
- [JSON 消息](#json-消息)
对于每一种消息段类型,将分别给出消息段格式和 CQ 码格式的例子,然后解释各参数的含义。
下面所有可能的值为 `0` 和 `1` 的参数,也可以使用 `no` 和 `yes`、`false` 和 `true`。
## 纯文本
```json
{
"type": "text",
"data": {
"text": "纯文本内容"
}
}
```
```
纯文本内容
```
| 参数名| 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `text` | ✓ | ✓ | - | 纯文本内容 |
## QQ 表情
```json
{
"type": "face",
"data": {
"id": "123"
}
}
```
```
[CQ:face,id=123]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `id` | ✓ | ✓ | 见 [QQ 表情 ID 表](https://github.com/richardchien/coolq-http-api/wiki/%E8%A1%A8%E6%83%85-CQ-%E7%A0%81-ID-%E8%A1%A8) | QQ 表情 ID |
## 图片
```json
{
"type": "image",
"data": {
"file": "http://baidu.com/1.jpg"
}
}
```
```
[CQ:image,file=http://baidu.com/1.jpg]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `file` | ✓ | ✓[1] | - | 图片文件名 |
| `type` | ✓ | ✓ | `flash` | 图片类型,`flash` 表示闪照,无此参数表示普通图片 |
| `url` | ✓ | | - | 图片 URL |
| `cache` | | ✓ | `0` `1` | 只在通过网络 URL 发送时有效,表示是否使用已缓存的文件,默认 `1` |
| `proxy` | | ✓ | `0` `1` | 只在通过网络 URL 发送时有效,表示是否通过代理下载文件(需通过环境变量或配置文件配置代理),默认 `1` |
| `timeout` | | ✓ | - | 只在通过网络 URL 发送时有效,单位秒,表示下载网络文件的超时时间,默认不超时 |
[1] 发送时,`file` 参数除了支持使用收到的图片文件名直接发送外,还支持:
- 绝对路径,例如 `file:///C:\\Users\Richard\Pictures\1.png`,格式使用 [`file` URI](https://tools.ietf.org/html/rfc8089)
- 网络 URL,例如 `http://i1.piimg.com/567571/fdd6e7b6d93f1ef0.jpg`
- Base64 编码,例如 `base64://iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAAKElEQVQ4EWPk5+RmIBcwkasRpG9UM4mhNxpgowFGMARGEwnBIEJVAAAdBgBNAZf+QAAAAABJRU5ErkJggg==`
## 语音
```json
{
"type": "record",
"data": {
"file": "http://baidu.com/1.mp3"
}
}
```
```
[CQ:record,file=http://baidu.com/1.mp3]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `file` | ✓ | ✓[1] | - | 语音文件名 |
| `magic` | ✓ | ✓ | `0` `1` | 发送时可选,默认 `0`,设置为 `1` 表示变声 |
| `url` | ✓ | | - | 语音 URL |
| `cache` | | ✓ | `0` `1` | 只在通过网络 URL 发送时有效,表示是否使用已缓存的文件,默认 `1` |
| `proxy` | | ✓ | `0` `1` | 只在通过网络 URL 发送时有效,表示是否通过代理下载文件(需通过环境变量或配置文件配置代理),默认 `1` |
| `timeout` | | ✓ | - | 只在通过网络 URL 发送时有效,单位秒,表示下载网络文件的超时时间 ,默认不超时|
[1] 发送时,`file` 参数除了支持使用收到的语音文件名直接发送外,还支持其它形式,参考 [图片](#图片)。
## 短视频
```json
{
"type": "video",
"data": {
"file": "http://baidu.com/1.mp4"
}
}
```
```
[CQ:video,file=http://baidu.com/1.mp4]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `file` | ✓ | ✓[1] | - | 视频文件名 |
| `url` | ✓ | | - | 视频 URL |
| `cache` | | ✓ | `0` `1` | 只在通过网络 URL 发送时有效,表示是否使用已缓存的文件,默认 `1` |
| `proxy` | | ✓ | `0` `1` | 只在通过网络 URL 发送时有效,表示是否通过代理下载文件(需通过环境变量或配置文件配置代理),默认 `1` |
| `timeout` | | ✓ | - | 只在通过网络 URL 发送时有效,单位秒,表示下载网络文件的超时时间 ,默认不超时|
[1] 发送时,`file` 参数除了支持使用收到的视频文件名直接发送外,还支持其它形式,参考 [图片](#图片)。
## @某人
```json
{
"type": "at",
"data": {
"qq": "10001000"
}
}
```
```
[CQ:at,qq=10001000]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `qq` | ✓ | ✓ | QQ 号、`all` | @的 QQ 号,`all` 表示全体成员 |
## 猜拳魔法表情
```json
{
"type": "rps",
"data": {}
}
```
```
[CQ:rps]
```
## 掷骰子魔法表情
```json
{
"type": "dice",
"data": {}
}
```
```
[CQ:dice]
```
## 窗口抖动(戳一戳)
> **提示**
>
> 相当于戳一戳最基本类型的快捷方式。
```json
{
"type": "shake",
"data": {}
}
```
```
[CQ:shake]
```
## 戳一戳
```json
{
"type": "poke",
"data": {
"type": "126",
"id": "2003"
}
}
```
```
[CQ:poke,type=126,id=2003]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `type` | ✓ | ✓ | 见 [Mirai 的 PokeMessage 类](https://github.com/mamoe/mirai/blob/f5eefae7ecee84d18a66afce3f89b89fe1584b78/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/HummerMessage.kt#L49) | 类型 |
| `id` | ✓ | ✓ | 同上 | ID |
| `name` | ✓ | | 同上 | 表情名 |
## 匿名发消息
> **提示**
>
> 当收到匿名消息时,需要通过 [消息事件的群消息](../event/message.md#群消息) 的 `anonymous` 字段判断。
```json
{
"type": "anonymous",
"data": {}
}
```
```
[CQ:anonymous]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `ignore` | | ✓ | `0` `1` | 可选,表示无法匿名时是否继续发送 |
## 链接分享
```json
{
"type": "share",
"data": {
"url": "http://baidu.com",
"title": "百度"
}
}
```
```
[CQ:share,url=http://baidu.com,title=百度]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `url` | ✓ | ✓ | - | URL |
| `title` | ✓ | ✓ | - | 标题 |
| `content` | ✓ | ✓ | - | 发送时可选,内容描述 |
| `image` | ✓ | ✓ | - | 发送时可选,图片 URL |
## 推荐好友
```json
{
"type": "contact",
"data": {
"type": "qq",
"id": "10001000"
}
}
```
```
[CQ:contact,type=qq,id=10001000]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `type` | ✓ | ✓ | `qq` | 推荐好友 |
| `id` | ✓ | ✓ | - | 被推荐人的 QQ 号 |
## 推荐群
```json
{
"type": "contact",
"data": {
"type": "group",
"id": "100100"
}
}
```
```
[CQ:contact,type=group,id=100100]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `type` | ✓ | ✓ | `group` | 推荐群 |
| `id` | ✓ | ✓ | - | 被推荐群的群号 |
## 位置
```json
{
"type": "location",
"data": {
"lat": "39.8969426",
"lon": "116.3109099"
}
}
```
```
[CQ:location,lat=39.8969426,lon=116.3109099]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `lat` | ✓ | ✓ | - | 纬度 |
| `lon` | ✓ | ✓ | - | 经度 |
| `title` | ✓ | ✓ | - | 发送时可选,标题 |
| `content` | ✓ | ✓ | - | 发送时可选,内容描述 |
## 音乐分享
```json
{
"type": "music",
"data": {
"type": "163",
"id": "28949129"
}
}
```
```
[CQ:music,type=163,id=28949129]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `type` | | ✓ | `qq` `163` `xm` | 分别表示使用 QQ 音乐、网易云音乐、虾米音乐 |
| `id` | | ✓ | - | 歌曲 ID |
## 音乐自定义分享
```json
{
"type": "music",
"data": {
"type": "custom",
"url": "http://baidu.com",
"audio": "http://baidu.com/1.mp3",
"title": "音乐标题"
}
}
```
```
[CQ:music,type=custom,url=http://baidu.com,audio=http://baidu.com/1.mp3,title=音乐标题]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `type` | | ✓ | `custom` | 表示音乐自定义分享 |
| `url` | | ✓ | - | 点击后跳转目标 URL |
| `audio` | | ✓ | - | 音乐 URL |
| `title` | | ✓ | - | 标题 |
| `content` | | ✓ | - | 发送时可选,内容描述 |
| `image` | | ✓ | - | 发送时可选,图片 URL |
## 回复
```json
{
"type": "reply",
"data": {
"id": "123456"
}
}
```
```
[CQ:reply,id=123456]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `id` | ✓ | ✓ | - | 回复时引用的消息 ID |
## 合并转发
```json
{
"type": "forward",
"data": {
"id": "123456"
}
}
```
```
[CQ:forward,id=123456]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `id` | ✓ | | - | 合并转发 ID,需通过 [`get_forward_msg` API](../api/public.md#get_forward_msg-获取合并转发消息) 获取具体内容 |
## 合并转发节点
```json
{
"type": "node",
"data": {
"id": "123456"
}
}
```
```
[CQ:node,id=123456]
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `id` | | ✓ | - | 转发的消息 ID |
## 合并转发自定义节点
> **注意**
>
> 接收时,此消息段不会直接出现在消息事件的 `message` 中,需通过 [`get_forward_msg` API](../api/public.md#get_forward_msg-获取合并转发消息) 获取。
**例 1**
```json
{
"type": "node",
"data": {
"user_id": "10001000",
"nickname": "某人",
"content": "[CQ:face,id=123]哈喽~"
}
}
```
```
[CQ:node,user_id=10001000,nickname=某人,content=[CQ:face,id=123]哈喽~]
```
**例 2**
```json
{
"type": "node",
"data": {
"user_id": "10001000",
"nickname": "某人",
"content": [
{"type": "face", "data": {"id": "123"}},
{"type": "text", "data": {"text": "哈喽~"}}
]
}
}
```
| 参数名 | 收 | 发 | 可能的值 | 说明 |
| --- | --- | --- | --- | --- |
| `user_id` | ✓ | ✓ | - | 发送者 QQ 号 |
| `nickname` | ✓ | ✓ | - | 发送者昵称 |
| `content` | ✓ | ✓ | - | 消息内容,支持发送消息时的 `message` 数据类型,见 [API 的参数](../api/#参数) |
## XML 消息
```json
{
"type": "xml",
"data": {
"data": "
| 上一节 | 下一节 |
| --- | --- |
| [数组格式](array.md) | [API 概述](../api/README.md) |