目录导航:
[TOC]
说明
---
### 目前支持
* 使用``Socket``和``HTTP(S)``方法提交数据
* 使用``json``和``key=value``(url参数形式) 的数据格式
* 提交 校验参数(Token) 达到防盗链效果
### 校验参数说明
如果设置了 校验数据 所需的```key```,那么,插件在每次提交的数据内会附加参数:```authTime```和```authToken```,如
~~~
{
"authTime":1503725239,
"authToken":"12bb459428005008d7ba7503a697ea02"
}
~~~
其中,
* ```authTime```表示 当前时间的十位时间戳,
* ```authToken```表示 校验参数```Token```。
#### ```authToken```的计算方法
1. 获取 **当前时间的十位时间戳**,作为```authTime```
2. 将 检验数据所设置的```key```与```authTime```组合成 **```key:authTime```** 形式的字符串
3. 计算 第2步获得的字符串 的**MD5**值,应为 **32位小写形式**
##### 示例:
* PHP
~~~
$key = '456'; //检验数据所设置的key
$authTime = time(); //当前时间的十位时间戳
$authToken = md5($key.':'.$authTime); //计算token
$sendData['authTime']=$authTime //追加 时效参数
$sendData['authToken']=$authToken //追加 token参数
~~~
* Python 3
~~~
# 引用库
import hashlib
from datetime import datetime
# 当前时间的十位时间戳
time = int(datetime.now().timestamp())
authTime = time
# 检验数据所设置的key
key = '456'
# 计算token
md5 = hashlib.md5()
string = bytes('%s:%d' % (key, time), encoding='utf-8')
md5.update(string)
authToken = md5.hexdigest()
~~~
服务端(```PHP```,```Python```等)应做好判断,避免接口被误调用
提交说明
---
* 事件的每个属性 *(来源QQ,消息类型)* 将**直接作为根属性**
* 每个事件提交的属性并不相同,但可能存在一些「公共属性」。
对提交过程时的响应数据说明
---
* 输出的数据必须为 **```json```** 数据格式,**允许输出多行json文本**
* 如果**不需要插件处理**返回的数据,可以直接输出```[]```
* **必须输出内容**,否则插件会视为与接口通信失败,即使HTTP状态码为```200```
事件列表 && 提交数据
---
### **注意**
* 若**属性名为 `a.xx` 格式**,则**表示这是一个子属性**
* 如果**属性类型为```array```,并且使用```key=value```形式提交,则需对该属性的值进行```json_decode```**
#### **公共数据**
* 所有事件均会携带的参数,部分参数不再下面赘述。
```json
{
"type":104,
"subType":1,
"time":1583338918,
"loginQQ":12345,
"handle":12345
}
```
| 参数名 | 类型 | 说明 |
| --- | --- | --- |
| `type` | number | 事件类型标识 |
| `subType` | number | 事件子类型标识 |
| `time` | number | 收到事件时的时间,十位时间戳形式 |
| `loginQQ` | number | 事件所属的机器人QQ |
| `handle` | number | 在事件处理完成前的唯一处理标识 |
#### **图片数据**
* 在**聊天事件下**(私聊,群,讨论组消息),**如果消息内容包含图片(image),则会提交```originalMsg```,```imageInfo```属性**,例如:
~~~
{
"originalMsg":"[CQ:image,file=930C95C5.png]",
"imageInfo":[
{
"md5":"930C95C5",
"width":629,
"height":523,
"size":23472,
"url":"https://gchat.qpic.cn",
"addTime":150365016
}
]
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```originalMsg``` | string | - | 消息原文 |
| ```imageInfo``` | array | - | 图片信息数组 |
| ```imageInfo[i]``` | object | - | 第```++i```个图片的信息 |
| ```imageInfo[i].md5``` | string | - | 图片的md5值 |
| ```imageInfo[i].width``` | int | - | 图片的宽度 |
| ```imageInfo[i].height``` | int | - | 图片的高度 |
| ```imageInfo[i].size``` | int | - | 图片的大小,单位:B |
| ```imageInfo[i].url``` | string | - | 图片的下载地址 |
| ```imageInfo[i].addTime``` | int | - | 图片的上传时间,时间戳形式 |
### **私聊消息(`PrivateMsg`)**
提交数据:
~~~
{
"type":1,
"subType":11,
"qq":123456,
"msg":"gg",
"font":6623256,
"msgID":999
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```1``` | 事件类型,此事件固定为```1``` |
| ```subType``` | int | ``1``,``2``,``3``,```11``` | 事件子类型,``11``/来自好友 ``1``/来自在线状态 ``2``/来自群 ``3``/来自讨论组 |
| ```qq``` | number | - | 触发事件(即发送消息)的QQ号 |
| ```msg``` | string | - | 消息内容 |
| ```font``` | int | - | 对方使用的字体id |
| ```msgID``` | int | - | 消息ID,调用API **`deleteMsg[撤回消息]`** 时需要传递此参数 |
### **群消息(`GroupMsg`)**
提交数据:
~~~
{
"type":2,
"subType":1,
"qq":123456,
"group":667890,
"msg":"gg",
"font":182084192,
"msgID":999
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```2``` | 事件类型,此事件固定为```2``` |
| ```subType``` | int | ``1``,``2``,``3`` | 事件子类型,```1```/普通消息,```2```/匿名消息,```3```/系统消息 |
| ```group``` | number | - | 事件来源的QQ群号 |
| ```qq``` | number | - | 触发事件(即发送消息)的QQ号 |
| ```msg``` | string | - | 消息内容 |
| ```font``` | int | - | 对方使用的字体id |
| ```msgID``` | int | - | 消息ID,调用API **`deleteMsg[撤回消息]`** 时需要传递此参数 |
#### 收到匿名消息
收到匿名消息时,```qq```的值会固定为```800010000```,
并提交```fromAnonymous```,```anonymousInfo```参数,如
~~~
{
"fromAnonymous":"AAAAA0Q194=",
"anonymousInfo":{
"aid":1000013,
"code":"曹植",
"token":"S4EyN0c8/DX3g=="
}
}
~~~
属性说明:
| 属性名 | 类型 | 说明 |
| --- | --- | --- | --- |
| ```fromAnonymous``` | string | 来源匿名用户 |
| ```anonymousInfo``` | object | 匿名用户的信息 |
| ```anonymousInfo.aid``` | number | 匿名用户标识 |
| ```anonymousInfo.code``` | string | 匿名用户代号,如"大力鬼王" |
| ```anonymousInfo.token``` | string | 匿名用户Token,已Base64编码 |
### **讨论组消息(`DiscussMsg`)**
提交数据:
~~~
{
"type":4,
"subType":1,
"qq":6767688,
"group":123456,
"msg":"gg",
"font":44199040,
"msgID":999
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```4``` | 事件类型,此事件固定为```4``` |
| ```subType``` | int | ``1`` | 事件子类型,目前固定为```1``` |
| ```group``` | number | - | 事件来源的讨论组号 |
| ```qq``` | number | - | 触发事件(即发送消息)的QQ号 |
| ```msg``` | string | - | 消息内容 |
| ```font``` | int | - | 对方使用的字体id |
| ```msgID``` | int | - | 消息ID,调用API **`deleteMsg[撤回消息]`** 时需要传递此参数 |
### **群文件上传(`GroupUpload`)**
提交数据:
~~~
{
"type":11,
"subType":1,
"qq":68888890,
"group":11111111,
"file":"AC/b=",
"fileInfo":{
"size":21246835,
"busid":102,
"name":"com.segmentfault.app-1.apk",
"id":"/8a179ccf-bc0f-4abd-8656-beb6666b0452"
}
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```11``` | 事件类型,此事件固定为```11``` |
| ```subType``` | int | ``1`` | 事件子类型,目前固定为```1``` |
| ```group``` | number | - | 事件来源的QQ群号 |
| ```qq``` | number | - | 触发事件(即发送消息)的QQ号 |
| ```file``` | string | - | 无用的文件信息 |
| ```fileInfo``` | object | - | 文件信息 |
| ```fileInfo.size``` | int | - | 文件大小 |
| ```fileInfo.busid``` | int | - | 文件busid |
| ```fileInfo.name``` | string | - | 文件名 |
| ```fileInfo.id``` | string | - | 文件id |
### **群管理员变动(`GroupAdminChange`)**
提交数据:
~~~
{
"type":101,
"subType":1,
"group":123456,
"beingOperateQQ":123456
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```101``` | 事件类型,此事件固定为```101``` |
| ```subType``` | int | ```1```,```2``` | 事件子类型,```1```/被取消管理员,```2```/被设置管理员 |
| ```group``` | number | - | 事件来源的QQ群号 |
| ```beingOperateQQ``` | number | - | 被操作的QQ号 |
### **群成员减少(`GroupMemberDecrease`)**
提交数据:
~~~
{
"type":102,
"subType":2,
"qq":99998,
"group":123456,
"beingOperateQQ":11223456
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```102``` | 事件类型,此事件固定为```102``` |
| ```subType``` | int | ```1```,```2``` | 事件子类型,```1```/群员离开,```2```/群员被踢 |
| ```group``` | number | - | 事件来源的QQ群号 |
| ```qq``` | number | - | 操作者QQ(仅```subType```为```2```时存在) |
| ```beingOperateQQ``` | number | - | 被操作QQ号(即被踢的QQ) |
### **群成员增加(`GroupMemberIncrease`)**
提交数据:
~~~
{
"type":103,
"subType":1,
"qq":666663,
"group":123456,
"beingOperateQQ":11223456
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```103``` | 事件类型,此事件固定为```103``` |
| ```subType``` | int | ```1```,```2``` | 事件子类型,```1```/管理员已同意,```2```/管理员邀请 |
| ```group``` | number | - | 事件来源的QQ群号 |
| ```qq``` | number | - | 操作者QQ(即管理员QQ) |
| ```beingOperateQQ``` | number | - | 被操作QQ(即加群的QQ) |
### **好友已添加(`FriendAdd`)**
提交数据:
~~~
{
"type":201,
"subType":1,
"qq":11223456
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```201``` | 事件类型,此事件固定为```201``` |
| ```subType``` | int | ```1``` | 事件子类型,目前固定为```1``` |
| ```qq``` | number | - | 来源QQ |
### **好友添加请求(`FriendAddRequest`)**
提交数据:
~~~
{
"type":301,
"subType":1,
"qq":11223456,
"msg":"问题1:加我作甚么 回答:。。。",
"responseFlag":"2479"
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```301``` | 事件类型,此事件固定为```301``` |
| ```subType``` | int | ```1``` | 事件子类型,目前固定为```1``` |
| `qq` | int | - | 请求添加好友的QQ
| ```msg``` | string | - | 附言 |
| ```responseFlag``` | string | - | 反馈标识,调用API **`setFriendAddRequest[置好友添加请求]`** 时需要传递此参数 |
### **群添加请求(`GroupAddRequest`)**
提交数据:
~~~
{
"type":302,
"subType":1,
"qq":23333333,
"group":123456,
"msg":"",
"responseFlag":"2477"
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```302``` | 事件类型,此事件固定为```302``` |
| ```subType``` | int | ```1```,```2``` | 事件子类型,```1```/他人申请入群,```2```/自己(即登录号)受邀入群 |
| ```group``` | number | - | 事件来源的QQ群号 |
| ```qq``` | number | - | 来源QQ(即请求加群的QQ) |
| ```msg``` | string | - | 附言 |
| ```responseFlag``` | string | - | 反馈标识,调用API **`setGroupAddRequest[置群添加请求]`** 时需要传递此参数 |
### **群禁言事件(`GroupBan`)**
提交数据:
~~~
{
"type":104,
"subType":1,
"time":1583338918,
"loginQQ":12345,
"qq":23456,
"group":34567,
"beingOperateQQ":45678,
"duration":0
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| ```type``` | int | ```104``` | 事件类型,此事件固定为```104``` |
| `subType` | int | `1`,`2` | 事件子类型,`1`/被解禁,`2`/被禁言 |
| ```group``` | number | - | 事件来源的QQ群号 |
| ```qq``` | number | - | 操作者QQ |
| `beingOperateAccount` | number | - | 被禁言的QQ,(若为全群禁言/解禁,则本参数为 0) |
| `duration` | number | - | 禁言时长(单位:秒,仅子类型为`2`,即被禁言时可用) |
### **点击菜单事件(`ClickMenu`)**
提交数据:
~~~
{
"type":901,
"subType":0
}
~~~
属性说明:
| 属性名 | 类型 | 可能的值 | 说明 |
| --- | --- | --- | --- |
| `type` | int | `901` | 事件类型,此事件固定为`901` |
| `subType` | int | `0` | 事件子类型,目前固定为`0` |