道无涯自用QQ机器人框架接口文档

关于本项目

  • 由道无涯i开发的一个基于 Lsposed(Non-Riru) 实现的QQ机器人框架
  • 我确信,这是目前安卓端上功能最全最完整的一个机器人框架
  • 目前并没有对外开放,毕竟机器人框架这种东西比较容易火,容易被黑灰产非法利用
  • 接口文档已趋于完善,机器人框架正式开发完毕

如果你想拥有一个这样的机器人,但困于编程知识储备不足,可联系 道无涯 按需定制,具体可移步 软件|源码定制

同类项目

框架更新情况

  • 截止至2025.10.17,目前适配QQ最新版本(9.2.20.30025)(2025.9.26发布版)

插件功能一览

当然,这并不单纯是一个机器人框架,还是一个QQ多功能插件,下面是所有的功能预览图。




请求与响应

目前支持 GET 和 POST 两种请求方式

GET 请求

GET 请求的 URL 由以下部分组成:
http://<host>:<port>/<endpoint>?<params>

链接中的含义如下:

  • <host>:IP 地址,例 127.0.0.1
  • <port>:API 端口,默认为 5700
  • <endpoint>:API 端点,例 send_text_msg
  • <params>:GET 请求的参数,例 param1=value1&param2=value2

POST 请求

POST 请求的 URL 由以下部分组成:
http://<host>:<port>/<endpoint>

链接中的含义如下:

  • <host>:IP 地址,例 127.0.0.1
  • <port>:API 端口,默认为 5701
  • <endpoint>:API 端点,例 send_text_msg
  • POST请求的Content-type为application/json
{
    "qq": "942001860",
    "text": "你好,道无涯!",
    "atQqArr": [],
    "chatType": 1
}

raw示例

POST http://127.0.0.1:5700/endpoint HTTP/1.1
Content-Type: application/json;charset=utf-8

{"param1": "", "param2": ""}

响应

响应格式为 JSON

如果下面的接口是获取值的,那么返回值会放在message字段里,没有返回值则返回常规提示性的字符串

{
    "result": "success", // 状态,success 为成功,error为失败
    "message": "文本消息发送成功!", // 返回结果示例
}

事件与消息上报

上报时,插件将作为客户端,对接端作为服务器,插件向对接端发起POST请求进行数据传输

  • 上报方式(method): POST
  • 上报链接(url): http://ip:port/wxBot,ip和port为对接端的
  • 上报体(body):所有上报必定包含字段post_type

用这个post_type的值去区分各种事件与消息的上报类型,目前设定的post_type值有三种:

post_type 说明
message 消息事件
group_increase 群成员增加事件
group_decrease 群成员减少事件

message(消息事件)

  • post_type为message时代表是消息事件
  • 消息事件又以字段message_type作为区分,值分别有:
message_type 说明
group 群消息
private 私聊消息
group(群消息)

群消息字段包含六种:

字段 说明
groupId 目标群聊的QQ群号
atQqList 消息所@的群成员,例:[{"uin": "xxx". "uid": "xxx"}]
uin 发送消息的群成员的uin
uid 发送消息的群成员的uid
content 消息内容
msgId 消息ID
private(私聊消息)

私聊消息字段包含四种:

字段 说明
uin 发送消息的好友的uin
uid 发送消息的好友的uid
content 消息内容
msgId 消息ID

group_increase(群成员增加事件)

  • post_type为group_increase时代表群成员增加了,也就是意味着有新成员加入群聊了
  • 群成员增加事件有四个字段:
字段 说明
groupId 群成员增加群聊的QQ群号
uin 新增群成员的uin
uid 新增群成员的uid
nickName 新增群成员的QQ昵称

group_decrease(群成员减少事件)

  • post_type为group_decrease时代表群成员减少了,也就是意味着有成员退出群聊了
  • 群成员减少事件有三个字段:
字段 说明
groupId 群成员减少群聊的QQ群号
qq 退群成员的uin或者uid(uin为null则为uid)
nickName 退群成员的QQ昵称

消息相关接口

发送文本消息

该接口用于发送文本消息。

API 端点(POST

/send_text_msg

参数
字段 类型 必须 说明
qq string 目前群或人的uin或者uid
text string 消息内容
atQqArr array 要@的人的uin或者uid
chatType int 消息类型,1为私聊消息,2为群聊消息

发送图片消息

该接口用于发送图片消息。

API 端点(POST

/send_image_msg

参数
字段 类型 必须 说明
qq string 目前群或人的uin或者uid
image string 图片,可以是本地路径或者是url链接,如果是url则默认以jpg格式发送
isRaw boolean 是否发送原图
chatType int 消息类型,1为私聊消息,2为群聊消息

发送引用回复图片消息

该接口用于对某条消息进行引用并发送图片。

API 端点(POST

/send_reply_image_msg

参数
字段 类型 必须 说明
msgId string 引用的消息ID
qq string 目前群或人的uin或者uid
image string 图片,可以是本地路径或者是url链接,如果是url则默认以jpg格式发送
isRaw boolean 是否发送原图
chatType int 消息类型,1为私聊消息,2为群聊消息

发送引用回复文本消息

该接口用于对某条消息进行引用并发送文本。

API 端点(POST

/send_reply_text_msg

参数
字段 类型 必须 说明
msgId string 引用的消息ID
qq string 目前群或人的uin或者uid
text string 消息内容
atQqArr array 要@的人的uin或者uid
chatType int 消息类型,1为私聊消息,2为群聊消息

发送文本图片消息

该接口用于发送文图一体的消息。

API 端点(POST

/send_text_image_msg

参数
字段 类型 必须 说明
qq string 目前群或人的uin或者uid
text string 消息内容
image string 图片,可以是本地路径或者是url链接,如果是url则默认以jpg格式发送
isRaw boolean 是否发送原图
atQqArr array 要@的人的uin或者uid
chatType int 消息类型,1为私聊消息,2为群聊消息

发送文本图片文本消息

该接口用于发送文图文一体的消息。

API 端点(POST

/send_text_image_text_msg

参数
字段 类型 必须 说明
qq string 目前群或人的uin或者uid
text string 消息内容
text1 string 消息内容1
image string 图片,可以是本地路径或者是url链接,如果是url则默认以jpg格式发送
isRaw boolean 是否发送原图
atQqArr array 要@的人的uin或者uid
chatType int 消息类型,1为私聊消息,2为群聊消息

发送视频消息

该接口用于发送视频消息。

API 端点(POST

/send_video_msg

参数
字段 类型 必须 说明
qq string 目前群或人的uin或者uid
video string 视频,可以是本地路径或者是url链接,如果是url则默认以mp4格式发送
chatType int 消息类型,1为私聊消息,2为群聊消息

发送文件消息

该接口用于发送文件消息。

API 端点(POST

/send_file_msg

参数
字段 类型 必须 说明
qq string 目前群或人的uin或者uid
file string 任意类型文件,可以是本地路径或者是url链接
ext string 文件后缀(例如.js.txt)或者文件名(例如a.jsb.txt),如果是文件后缀则发送时将自动生成随机时间戳文件名发送(例如hook_16822454545.js)。当file为本地路径时此字段不需要填,为url链接则必须填
chatType int 消息类型,1为私聊消息,2为群聊消息

发送语音消息

该接口用于发送语音消息。

API 端点(POST

/send_voice_msg

参数
字段 类型 必须 说明
qq string 目前群或人的uin或者uid
voice string 语音文件,可以是本地路径或者是url链接,必须为*.slk或者*.wav或者*.mp3类型文件
duration int 语音文件的时长(毫秒),用于显示在QQ界面语音的长度,可以是虚假的值,大于0即可
chatType int 消息类型,1为私聊消息,2为群聊消息

群聊管理相关接口

获取群成员信息

该接口用于获取指定群的所有群成员的信息,返回对象型数组。例:

[
    {
        "index":0, // 下标索引
        "friendnick":"道无涯", // 昵称
        "role":"群主", // 身份:群主、管理员、群员
        "join_time":1760684247, // 加群时间
        "last_sent_time": 1760684447, // 上次活跃时间
        "uin":"942001860",
        "uid":"u_xxxxxxxx"
    }
]
API 端点(GET

/get_group_member_info

参数
字段 类型 必须 说明
groupId string QQ群号码

设置群成员禁言

该接口用于对指定群成员进行禁言

API 端点(GET

/ban_group_member

参数
字段 类型 必须 说明
groupId string QQ群号码
qq string 目前群员的uin或者uid
bseconds int 禁言秒数,0为解除禁言,禁言秒数不能超过29天23时59秒

踢出群聊

该接口用于将指定群成员踢出群聊

API 端点(GET

/kick_group_member

参数
字段 类型 必须 说明
groupId string QQ群号码
qq string 目前群员的uin或者uid
isBlack boolean 是否加入黑名单

撤回消息

该接口用于对消息进行撤回,不局限于群消息,也可以是私聊消息

API 端点(GET

/delete_msg

参数
字段 类型 必须 说明
msgId string 撤回的消息ID
qq string 撤回的消息所在聊天。如果在群聊,那这个填的是群聊号码(而不是发送人),如果是私聊,那就是填自己的uid或者uin
chatType int 消息类型,1为私聊消息,2为群聊消息

群签到

该接口用于踢出指定群成员

API 端点(GET

/group_sign

参数
字段 类型 必须 说明
groupId string QQ群号码

账号等其它相关接口

获取登录信息

该接口用于获取当前账号的登录信息

API 端点(GET

/get_login_info

参数
字段 类型 必须 说明
index int 0(uin)、1(昵称)

获取QQ头像

该接口用于获取指定wxid的微信头像,返回头像的Base64数据

API 端点(GET

/get_avatar

参数
字段 类型 必须 说明
uin string 目标人的uin

根据uid获取uin

该接口用于根据uid获取uin

API 端点(GET

/uid_to_uin

参数
字段 类型 必须 说明
text string uid的文本值

根据uin获取uid

该接口用于根据uin获取uid

API 端点(GET

/uin_to_uid

参数
字段 类型 必须 说明
text string uin的文本值

清空缓存目录

该接口用于清空发送的缓存目录

至于所谓的缓存目录,对于上面的发图、发视频、发文件、发语音来说,发送的时候都会将要发送的目标先复制到该缓存目录再进行发送,因为如果直接指定路径的话有时候会没权限。

  • /storage/emulated/0/Android/data/com.tencent.mobileqq/cache/share/*
API 端点(GET

/clear_send_cache

简述搭建与使用

  • 事先需要准备一部安卓机,需要刷机过且已安装Lsposed框架,因为机器人相关功能被开发成Xposed模块,需要基于Lsposed去运作
  • 安装 本插件 并在Lsposed中启用,作用域是系统框架与QQ,勾选后重启系统
  • 根据接口文档编写对接代码,接口仅支持Http
  • 将对接代码部署到本机(推荐),如果不部署到本机也可以部署到局域网的其它设备,例如电脑上。我一般的话,开发的时候方便调试就部署在电脑,实际用的时候直接部署在本机
  • 那么,如何部署在本机?我是用的是Linux Deploy,当然也可以选择termux。需要记住部署的端口,注意启动的ip地址最好设置成127.0.0.1,不要用ipv4
  • 我全套写的是Http协议,设置的回调端口是1234,而我是直接部署在本机。故在模块的设置页面我需要设置回调的HTTP地址为:http://127.0.0.1:1234
  • 不建议用ipv4地址,因为用127.0.0.1的话即使换个网络,比如切换数据也能直接使用,而无需再修改ip地址
  • 至此,整个流程完成!

具体运作

  • 我感觉我玩的挺花的,毕竟目前还没有人像我这么结合地去搞机器人
  • 我用的方案是:Linux Deploy+Tasker+本插件

Linux Deploy

  • 用于在 Android 设备上快速部署和运行完整的 Linux 操作系统环境
  • 主要用于部署已经编写好的对接代码,如果不想直接部署在安卓机上,也可以选择部署在局域网的设备上
  • 在Linux上安装个宝塔面板,无论你的对接代码是Java、Python、Php、Node.js等都能快速部署
  • 我是用Node.js写的,在宝塔的Node版本管理器上安装个稳定版的Node.js,再安装下PM2模块去启动项目即可,PM2会自动守护应用进程,当应用崩溃或异常退出时,自动重启以保证服务持续运行
  • 不能部署到云服务器上,除非再内网穿透,不过这样只会更麻烦,非常不建议
  • 故推荐直接在本机上部署,这样即使外出了,只要有网络,机器人也不会噶

Tasker

  • 一款功能强大的 Android 自动化工具应用,允许用户通过设定任务和触发条件,自动执行任务
  • 这东西我高中的时候就在玩了,是真的好用,用它去触发定时任务
  • 定时任务为什么不用cron或者schedule库呢?因为这始终不是运行在真实服务器,是运行在容器里的,如果手机息屏了,容器的活动就可能被限制了,定时凌晨4点的执行可能会到七八点才触发,甚至到亮屏才触发
  • Tasker的存活能力很强,能在我用过的应用中排第一,任务执行基本百分百准点,误差就几秒,即使手机是在完全息屏的情况下
  • 如何联动呢?在代码里编写好接口,在Tasker里定时执行http去触发这个接口
  • 下面是个使用示例
    由于我的服务器配置不太好,经常会死机,于是写了每5分钟检测一次服务器是否存活的代码配合Tasker,如果服务器挂掉了,机器人就会发送信息给我QQ大号提醒我重启下服务器

后台保活

  • 对于小米系统,有个 夜间休眠省电 的选项是默认开启的,需要关闭,否则夜间的时候机器人的运作会受到影响
  • 除此之外,应用权限里的 自启动 省电策略无限制 都可以开启
  • 另外模块内部已经对QQ进行消息管道保活hook,能保证信息的及时接收

已实现的功能

  • 群里很多人问我机器人用的什么框架,但是我知道他们问的其实是机器人功能方面的实现
  • 用什么框架其实都一样,毕竟不会给你直接提供这些花里胡哨的东西(一些定制的框架除外),机器人框架只是提供了快捷发送与监听消息的基本能力
  • 具体的功能都是要自己去编写对接代码去扩展实现的,花里胡哨的程度还得看自己的想法

爬虫相关

  • 每日7点自动爬取某公众号文章的新闻发送至群聊
  • 每日12点、18点、21点自动爬取三个主流论坛的热点文章信息至群聊
  • 抖音视频解析去水印,在群内发送 抖音视频的分享链接 就会触发自动解析去水印并发送处理后的视频至群聊
  • 博客检索,在群内发送 /博客检索 指定关键词 就会触发自动发送道无涯博客包含指定关键词的文章至群聊

作图相关

  • 说明:用已经制作好的模板对QQ头像进行动图或静图合成
  • 触发方式:群里发送 作图 可获取触发指令

HttpBox工具

  • 说明:通过raw可一键生成Http协议代码,节省开发时间,方便程序员调试,支持八大平台
  • 触发方式:群里发送 /httpbox 可获取触发指令说明

群管理相关

  • 自动审核入群申请,人机验证
  • 每日0点自动踢出群最后发言末n成员
  • 自动监测(200+群聊)关键词(道无涯自用,接单先人一步[手动狗头.jpg])

AI问答相关

由于经费问题,没有对外开放,仅道无涯个人使用

  • 对接ChatGPT,使用AI进行知识问答。触发方式:群内发送 /ai 问答内容
  • 搭建知识库并投喂autojs文档数据,再对接AI,实现精确问答。触发方式:群内发送 /aj 问答内容

生图相关

由于经费问题,没有对外开放,仅道无涯个人使用

  • 对接ComfyUI,可进行图生图,文生图等

其它

可扩展的玩法太多了,暂时还没有什么新奇的玩法点子,有空了再开发补充~


作 者:道无涯
来 源:道无涯博客
链 接: https://www.daowuya.love/qqbot/
版 权 声 明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。文章版权归作者所有,未经允许请勿转载!


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇