目錄導航:
[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` |