-
Notifications
You must be signed in to change notification settings - Fork 18
HTTP API FOR IRQQ 说明文档
写在前面:本插件目标为兼容当前常用的不同的机器人,整体来说本插件分为两大部分:即提交返回处理、主动推送功能(以下将以“提交返回”、“推送”来描述)。提交返回即将机器人的消息事件经本插件转发到你的URL,即携带机器人消息通过HTTP POST方式提交到你的URL,并且从你的URL获取相应格式的返回值以进一步处理;推送即通过配置插件的监听端口,监听特定的请求并作出相应回应的功能。本插件自2.0.0开始基本将推送响应功能与提交返回功能统一,即通过提交返回都能实现推送的功能(但相对比较麻烦,需要通过开发者进行远程消息异步处理),推送具有简便、主动等有点,但一般要求插件所在主机需要固定IP或者域名等。
提交返回功能-数据结构
注:一般情况下你可使用HTTPSDK来进行消息解析及发送,另外,你也可以根据数据结构自写功能
你可直接使用本插件进行提交消息的解析,以及处理等。以下将给出在PHP环境下接收端的Demo:
include 'HTTPSDK.php';
$sdk=new HTTPSDK();//获取操作对象并解析HTTP-API提交的消息
$msg=$sdk->getMsg();//获取传来的消息(array),详细请看数据结构
if($msg['Type']==HTTPSDK::$TYPE_FRIEND) {
//私聊消息回复
$sdk->sendPrivateMsg($msg['QQ'], '你发送了这样的消息:' . $msg['Msg']);//发送私聊消息
}
echo $sdk->returnJsonString();//最终返回,一定要输出
/**
* 发送私聊消息
* @param $QQ
* @param $Msg
* @param int $structureType 消息结构类型 0普通消息,1 XML消息,2 JSON消息
* @param int $subType XML、JSON消息发送方式下:0为普通(默认),1为匿名(需要群开启)
* @return $this
*/
public function sendPrivateMsg($qq,$msg,$structureType=0,$subType=0)
/**
* 发送群消息
* @param $QQ
* @param $Msg
* @param int $structureType 消息结构类型 0普通消息,1 XML消息,2 JSON消息
* @param int $subType XML、JSON消息发送方式下:0为普通(默认),1为匿名(需要群开启)
* @return $this
*/
public function sendGroupMsg($group,$msg,$structureType=0,$subType=0)
/**
* 发送讨论组消息
* @param $QQ
* @param $Msg
* @param int $structureType 消息结构类型 0普通消息,1 XML消息,2 JSON消息
* @param int $subType XML、JSON消息发送方式下:0为普通(默认),1为匿名(需要群开启)
* @return $this
*/
public function sendDiscussMsg($discuss,$msg,$structureType=0,$subType=0)
/**
* 向QQ点赞
* @param $QQ
* @param $count int 默认为1,作为消息的 Msg项
* @return $this
*/
public function sendLike($qq,$count=1)
/**
* 窗口抖动
* @param $qq
* @return HTTPSDK
*/
public function sendShake($qq)
/**
* 群禁言(管理)
* @param $group string 群号
* @param $qq string 禁言QQ,为空则禁言全群
* @param $time int 禁言时间,单位秒,至少10秒。0为解除禁言
* @return HTTPSDK
*/
public function setGroupBan($group,$qq='',$time=10)
/**
* 主动退群
* @param $group
* @return HTTPSDK
*/
public function setGroupQuit($group)
/**
* 踢人(管理)
* @param $group string
* @param $qq string
* @param bool $neverIn 是否不允许再加群
* @return HTTPSDK
*/
public function setGroupKick($group,$qq,$neverIn=false)
/**
* 设置群名片
* @param $group
* @param $qq
* @param string $card
* @return HTTPSDK
*/
public function setGroupCard($group,$qq,$card='')
/**
* 设置管理员(群主)
* @param $Group
* @param $QQ
* @param bool $become true为设置,false为取消
* @return HTTPSDK
*/
public function setGroupAdmin($group,$qq,$become=false)
/**
* 处理加群事件,是否同意
* @param $group
* @param $qq
* @param bool $agree 是否同意加群
* @param int $type 213请求入群 214我被邀请加入某群 215某人被邀请加入群 。为0则不管哪种
* @param string $msg 消息,当拒绝时发送的消息
* @return HTTPSDK
*/
public function handleGroupIn($group,$qq,$agree=true,$type=0,$msg='')
/**
* 是否同意被加好友
* @param $qq string
* @param bool $agree 是否同意
* @param string $msg 附加消息
* @return HTTPSDK
*/
public function handleFriendAdd($qq,$agree=true,$msg='')
/**
* 发群公告(管理)
* @param $group string
* @param $title string 内容
* @param $content string 信息
* @return HTTPSDK
*/
public function addGroupNotice($group,$title,$content)
/**
* 发群作业(管理)。注意作业名和标题中不能含有#号
* @param $group
* @param $homeworkName string 作业名
* @param $title string 标题
* @param $content string 内容
* @return HTTPSDK
*/
public function addGroupHomework($group,$homeworkName,$title,$content)
/**
* 获取陌生人信息
* @param $qq string
* @return HTTPSDK
*/
public function getStrangerInfo($qq)
/**
* 获取当前登陆的QQ
* @return HTTPSDK
*/
public function getLoginQQ()
/**
* 获取当前QQ群列表
* @return HTTPSDK
*/
public function getGroupList()
/**
* 获取当前登陆QQ好友列表
* @return HTTPSDK
*/
public function getFriendList()
/**
* 获取指定群群成员列表
* @param $groupid
* @return HTTPSDK
*/
public function getGroupMemberList($groupid)
/**
* 获取群公告
* @param $groupid
* @return HTTPSDK
*/
public function getGroupNotice($groupid)
注:你可使用主动推送功能进行消息推送
你可直接使用本插件进行提交消息的解析,以及处理等。以下将给出在PHP环境下接收端的Demo:
//插件推送端口为8888,且与本demo同主机
include "HTTPSDKPush.php";
$sdk=new HTTPSDKPush('http://127.0.0.1:8888');
$sdk->sendPrivateMsg('QQ号','一个XML标签:[ksust,link:title=标题,content=内容]');//向QQ发送消息,消息中包含XML标签的简化
var_dump($sdk->getGroupList());//获取群列表
其他SDK调用形式同上述HTTPSDK,在此不赘述。若你要使用自定制(如其他语言),可参考-推送数据结构
{
Myqq:机器人QQ,
Type:"消息类型,举例:【详看消息类型】 -1 未定义事件 1 好友信息 2,群信息 3,讨论组信息 4,群临时会话 5,讨论组临时会话 6,财付通转账,
SubType:接收财付通转账时 1为好友 2为群临时会话 3为讨论组临时会话 有人请求入群时,不良成员这里为1,
From:此消息的来源,如:群号、讨论组ID、临时会话QQ、好友QQ,
Group:来源群号,若无则为空,
Discuss:来源讨论组,若无则为空,
QQ:主动发送这条消息的QQ,踢人时为踢人管理员QQ,
ObjectQQ:被动触发的QQ,如某人被踢出群,则此参数为被踢出人QQ,
Msg:消息文本内容(当消息为JSON、XML时为相应内容)。消息反馈时为消息反馈文本(如取群列表),
ID:消息id,用于识别消息【如异步处理时】、撤回等,构成:消息序号-消息ID,
Data:{
//携带数据,如当消息为转账消息时,则有相关属性。以下举例转账消息
"Comments": "接收到转账时留言",
"Money": "接收到转账时金额(数字)",
"Number": "接收到转账时订单号"
}
}
{
data:[
{
Type:发送消息类型【具体查看SDK】, 1 好友信息 2,群信息 3,讨论组信息 4,群临时会话 5,讨论组临时会话 ...,20001 点赞,20002 窗口抖动,20011 群禁言(管理),20012 退群,20013 踢群成员(管理),20021 设置群名片(管理),20022 设置群管理(群主),20023 入群处理(某人请求入群、我被邀请入群、某人被邀请入群),20024 加好友处理(是否同意被加好友),20031 发公告,20032 发作业 等
SubType:子类型,0普通,1匿名(需要群开启,默认0),
StructureType:消息结构类型,0为普通文本消息(默认)、1为XML消息、2为JSON消息,
Group:操作或发送的群号或者讨论组号,
QQ:操作或者发送的QQ,
Msg:文本消息【标签等】,当发送类型为JSON、XML时为相应文本,禁言时为分钟数【分钟】,
Send:是否开启同步发送(1为开启同步发送【测试】,0为不开启【默认】),
Data:附加数据,用于特定操作等(文本型)
} ,
{
...
}
]
}
{
time:验证的时间戳,
verify:验证字符串,
data:[ //暂时仅允许一个成员
{
Type:发送消息类型, 1 好友信息 2,群信息 3,讨论组信息 4,群临时会话 5,讨论组临时会话 ...,20001 点赞,20002 窗口抖动,20011 群禁言(管理),20012 退群,20013 踢群成员(管理),20021 设置群名片(管理),20022 设置群管理(群主),20023 入群处理(某人请求入群、我被邀请入群、某人被邀请入群),20024 加好友处理(是否同意被加好友),20031 发公告,20032 发作业
SubType:子类型,0普通,1匿名(需要群开启,默认0),
StructureType:消息结构类型,0为普通文本消息(默认)、1为XML消息、2为JSON消息,
Group:操作或发送的群号或者讨论组号,
QQ:操作或者发送的QQ,
Msg:文本消息【标签等】,当发送类型为JSON、XML时为相应文本,禁言时为分钟数【分钟】,
Send:是否开启同步发送(1为开启同步发送【测试】,0为不开启【默认】),
Data:附加数据,用于特定操作等(文本型)
}
]
}
-
未定义 -1
-
好友 1
-
群 2
-
讨论组 3
-
群临时会话 4
-
讨论组临时会话 5
-
收到财付通转账 6
-
请求处理_同意 10
-
请求处理_拒绝 20
-
请求处理_忽略 30
-
被单项添加为好友 100
-
某人请求加为好友 101
-
被同意加为好友 102
-
被拒绝加为好友 103
-
被删除好友 104
-
好友签名变更 106
-
说说被某人评论 107
-
好友离线文件接收 105
-
群文件接收 218
-
某人请求入群 213
-
被邀请加入群 214
-
被批准入群 220
-
被拒绝入群 221
-
某人被邀请加入群 215
-
某人已被邀请入群 219
-
某人被批准加入了群 212
-
某人退出群 201
-
某人被管理移除群 202
-
某群被解散 216
-
某人成为管理 210
-
某人被取消管理 211
-
对象被禁言 203
-
对象被解除禁言 204
-
开启全群禁言 205
-
关闭全群禁言 206
-
开启匿名聊天 207
-
关闭匿名聊天 208
-
群公告变动 209
-
群名片变动 217
-
点赞 20001
-
窗口抖动 20002
-
群禁言(管理) 20011
-
主动退群 20012
-
踢群成员(管理) 20013
-
设置群名片(管理) 20021
-
设置群管理(群主) 20022
-
入群处理(某人请求入群、我被邀请入群、某人被邀请入群) 20023
-
加好友处理(是否同意被加好友) 20024
-
发群公告 20031
-
发群作业 20032
-
主动申请加入群 20033
-
创建讨论组 20041
-
邀请加入某讨论组 20042
-
踢出讨论组成员 20043
-
退出讨论组 20044
-
邀请QQ入群(管理+普通成员) 20051
-
获取当前QQ 20101
-
获取陌生人信息,JSON,昵称,性别,年龄,签名 20102
-
获取当前QQ群列表,JSON 20103
-
获取指定群成员列表,JSON 20104
-
获取好友列表,JSON 20105
-
获取群公告列表,JSON 20106
-
获取讨论组列表,JSON 20107
-
获取QQ等级 20111
-
获取群成员名片 20112
-
查询QQ是否在线 20113
-
查询QQ是否好友 20114
-
获取机器人状态信息,JSON 20115
-
获取目标对象赞数目,JSON 20201
-
置正在输入状态(发送消息取消) 20301
-
定时任务提交类型 30001
2.到 对接管理平台 免费获取授权码并在网页上添加相应功能
- 对象昵称:[ObjName] 应确保发送消息中包含IRC_触发对象_主动
- 对象QQ:[ObjQQ] 对象QQ号码
- 对象头像:[DisPic] 触发对象的头像
- 时间:[Time] 表示当前时间,例:2017年1月1日18时00分00秒
- 数字时间:[NumTime] 取时分两位数字时间,例:18:00
- 时间段:[TimePer] 例:凌晨、黎明、早上、中午、下午、傍晚、晚上
- 换行符:[\n] 换行
- 星期:[Week] 表示当前日期星期几
- 群名:[GName] 当前消息来源群名
- 群号:[GNum] 当前消息来源群号
- 机器人昵称:[RName] 机器人的昵称
- 机器人QQ:[RQQ] 机器人号码
- 农历:[LunC] 例如:五月初五
- 随机数:[1,300] 快速取随机数
- 随机Face表情:[RFace] QQ小黄豆表情
- 信息分段发送:[Next] 将一条消息分作两次发送
- 艾特全体:[IR:at=all] 艾特全体成员,当然必须是管理员
- 艾特码: 艾特全群:[IR:at=全体人员]
- 艾特个人:[IR:at=QQ] 如:[IR:at=123456]
- 表情码: [FaceX.gif](将X替换为1-213)‘此处应注意大小写
- 表情代码详情请见http://doc.irqq.me/,如:[Face1.gif]
- 颜表情:[emoji=表情代码] 具体代码请发送颜表情给机器人查看
- 图片发送:[IR:pic=图片路径或地址] 或者 直接发送框架收到的图片GUID
- 图片发送也可用GUID:[IR:pic={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.jpg] 这样的格式
- 秀图发送[IR:ShowPic=图片路径或地址,type=秀图特效] 秀图特效可参考常量,或 0 1 2 3 4 5 代替 (Pro可用)
- 秀图发送也可用GUID:[IR:ShowPic={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.jpg,type=秀图特效] 这样的格式 (Pro可用)
- 语音发送:[IR:Voi={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.amr]
- [ksust,music:name=歌曲名] 多选音乐卡片,传入歌名
- [ksust,link:url=链接网址,title=标题文字,content=内容文字,pic=图片链接] 简单图文连接
- [ksust,link2:url=链接网址,title=标题文字,content=内容文字,pic=图片链接,bcontent=内容2文字,bpic=大图链接] 简单图文,加大图和长文本
- [ksust,at:qq=#qq] 统一标签,艾特某人。qq=all 或 qq=QQ号码。可跨平台兼容
- [ksust,image:pic=图片地址] CQ、IRQQ统一网络图片标签,pic为网络图片地址,可跨平台兼容
类似提交返回,不同的是定时任务不会给你携带POST消息。其所接受到的数据同提交返回交给插件处理。可用于主动推送等
当你调用提交返回的获取群列表的方法时,插件会返回处理你的该条消息,并在下次向你发送你所需要的内容(消息的唯一性通过消息中的ID确定),通过这种机制(相当于远程回调),你可以不通过推送就实现类似推送的功能。