字符串格式
字符串格式是 CKYU 原生所使用的消息格式,在本标准中将继续使用以保持兼容。在字符串格式中,无论纯文本还是图片、表情、链接分享等多媒体内容都放在同一个字符串里,即,一条消息对应一个字符串。以下是一个字符串格式消息的例子:
[CQ:face,id=178]看看我刚拍的照片[CQ:image,file=123.jpg]在调用 API 发送这段消息时,JSON 如下:
{
"user_id": 10001000,
"message": "[CQ:face,id=178]看看我刚拍的照片[CQ:image,file=123.jpg]"
}CQ 码格式
消息中的多媒体内容使用 CQ 码来表示,形如 [CQ:face,id=178]。其中,[CQ:] 是固定格式;face 是「功能名」,除了 face 还有许多不同的功能名;id=178 是「参数」,某些功能不需要参数,而另一些需要多个参数,当有多个参数时,参数间使用逗号分隔。
一些 CQ 码的例子如下:
[CQ:shake]
[CQ:face,id=178]
[CQ:share,title=标题,url=http://baidu.com]更多 CQ 码功能请参考 消息段类型。
注意
CQ 码中不应有多余的空格,例如不应该使用
[CQ:face, id=178]。CQ 码的参数值可以包含空格、换行、除
[],&之外的特殊符号等。在解析时,应直接取[CQ:后、第一个,或]前的部分为功能名,第一个,之后到]之间的部分为参数,按,分割后,每个部分第一个=前的内容为参数名,之后的部分为参数值。例如[CQ:share,title=标题中有=等号,url=http://baidu.com]中,功能名为share,title参数值为标题中有=等号,url参数值为http://baidu.com。
转义
CQ 码中包含一些特殊字符:[、]、, 等,而 CQ 码又是可能混杂在纯文本内容之中的,因此消息中的纯文本内容需要对特殊字符进行转义,以避免歧义。具体的转义规则如下:
| 转义前 | 转义后 |
|---|---|
& | & |
[ | [ |
] | ] |
例如,一个纯文本消息转义前内容如下:
- [x] 使用 `&data` 获取地址转义后如下:
- [x] 使用 `&data` 获取地址另一方面,CQ 码内部的参数值也可能出现特殊字符,也是需要转义的。由于 ,(半角逗号)在 CQ 码中用于分隔参数,因此除了上面的转义规则,还需要对 , 进行转义,如下:
| 转义前 | 转义后 |
|---|---|
& | & |
[ | [ |
] | ] |
, | , |
例如,一个链接分享消息的 CQ 码可能如下:
[CQ:share,title=震惊,小伙睡觉前居然...,url=http://baidu.com/?a=1&b=2]| 上一节 | 下一节 |
|---|---|
| 消息概述 | 数组格式 |
