Skip to content

HTTP API FOR IRQQ 说明文档

ksust edited this page Oct 7, 2018 · 48 revisions

说明:此文档适用于HTTP-API 2.0.0及以上的版本

写在前面:本插件目标为兼容当前常用的不同的机器人,整体来说本插件分为两大部分:即提交返回处理、主动推送功能(以下将以“提交返回”、“推送”来描述)。提交返回即将机器人的消息事件经本插件转发到你的URL,即携带机器人消息通过HTTP POST方式提交到你的URL,并且从你的URL获取相应格式的返回值以进一步处理;推送即通过配置插件的监听端口,监听特定的请求并作出相应回应的功能。本插件自2.0.0开始基本将推送响应功能与提交返回功能统一,即通过提交返回都能实现推送的功能(但相对比较麻烦,需要通过开发者进行远程消息异步处理),推送具有简便、主动等有点,但一般要求插件所在主机需要固定IP或者域名等。

最新版动态

目录

提交返回功能-数据结构

注:一般情况下你可使用HTTPSDK来进行消息解析及发送,另外,你也可以根据数据结构自写功能

HTTPSDK:HTTPSDK.php

你可直接使用本插件进行提交消息的解析,以及处理等。以下将给出在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();//最终返回,一定要输出

以下列出HTTPSDK的方法

 /**
     * 发送私聊消息
     * @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)

主动推送功能

注:你可使用主动推送功能进行消息推送

HTTPSDKPush:HTTPSDKPush.php

你可直接使用本插件进行提交消息的解析,以及处理等。以下将给出在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:附加数据,用于特定操作等(文本型)
		}
	]
}

事件列表-提交返回-提交

事件 事件ID

  • 未定义 -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

使用说明

本插件支持IRQQ 单Q版和多Q版,大致使用流程如下:

1.首次使用,请下载IRQQ 以及HTTP-API,然后添加插件HTTP-API

2.到 对接管理平台 免费获取授权码并在网页上添加相应功能

3.到HTTP-API 设置授权码并开启服务。

4.好了,你可以不用管插件了,以后管理插件都在这个网站上了

IRQQ标签(可能会影响其他平台兼容性)

  • 对象昵称:[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确定),通过这种机制(相当于远程回调),你可以不通过推送就实现类似推送的功能。

Clone this wiki locally