QQ 聊天机器人小薇 2.1.0 发布!
本次发布加入了支持茉莉机器人,并且更容易搭建开发环境,在线显示登录二维码~
简介
XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动:
- 监听多个 QQ 群消息,发现有“感兴趣”的内容时通过图灵机器人或百度机器人进行智能回复
- 监听到的 QQ 群消息可以配置推送到论坛某个接口上,以实现论坛弹幕或者动态聚合效果,请看实例
- 在论坛代码中调用小薇进行 QQ 消息推送,比如论坛有新帖时自动推送到 QQ 群
- 加小薇为好友后可通过暗号(key)让她群推消息
总之,如果你需要一个连通 QQ 群和论坛的机器人,小薇是个不错的选择!
作者
小薇的爸爸叫 Daniel,妈妈叫 Vanessa,其他好心人可以在这里看到。
体验
体验之前一定要先仔细看完这个帖子:如何正确地使用小薇 QQ 机器人
- 加 QQ 群 13139268,然后发消息“小薇,你好!”
加小薇(Q3082959578)和小薇的守护(Q316281008)为好友,然后将他们都邀请进你所在的群就可以开始调戏了请自建私服- 在论坛的社群动态页面可看到由 QQ 群同步过来的消息
FAQ
如何正确地使用小薇 QQ 机器人?
论坛帖子传送门。
为什么要单独做成一个 Web 服务,而不是一个依赖 jar?
做成依赖库的话会随应用部署,从开发的角度是比较方便,但有个致命的问题是应用一般是部署在云端,而登录扫码是在本地,这样会造成 QQ 的异地登录,导致很多问题。
所以需要将小薇部署在本地,保证用手机和小薇启动后 QQ 不出现异地登录。但是这也需要解决一个问题,即需要为小薇提供“内网穿透”的能力,比如使用 ngrok,具体可参考这里。
为什么会出现“发送失败,Api返回码[1202]”?
这个问题是因为 QQ 服务器判断消息有问题时的返回,具体可关注这个 issue。
目前已经使用“小薇的守护”进行了改进,大幅度提升了消息发送的成功率。
出现“Api返回码[103]”怎么破?
先关闭小薇,然后将小薇、小薇的守护两个账号依次分别登录 w.qq.com 后在设置中退出登录,最后再次启动小薇,这时扫码后应该就不会 103 了。
报错 Group list error [groupId=xxxx], please report this bug to developer… 怎么破?
同 103 错误处理步骤。
为什么输出日志是乱码?
是由于控制台编码造成,可以在将 src/main/resources/log4j.properties 中加入 log4j.appender.stdout.Encoding=UTF-8 来解决。
发现问题该怎么反馈?
启动
- 安装好 Java 1.7+、Maven 2+
- Clone 本项目,并在项目根目录上执行
mvn jetty:run
这样小薇就启动了,然后根据输出提示进行扫码登录:
- 第一次扫码是小薇登录
- 第二次扫码是小薇的守护登录(如果启用了守护才会需要扫第二次码)
小薇的守护只需要和小薇在同一个群就行(守护不要用自己的,需要用一个不发消息的 QQ,不然消息监听会有问题)。
另外,如果你一定要在服务器上启动小薇(但真心不建议,请参考 FAQ 第二条):
- 打 war 包部署自己的容器,需要修改 latke.props 中的
serverHost为你服务器的公网 IP、serverPort为你容器监听的端口,如果你用了反向代理,那么serverHost可能就是你绑定的域名、serverPort是 80。简而言之,这两个值是你最终访问接口时候的值 - 登录的扫码可能有点麻烦,这时可以通过 /login 地址来访问二维码,哥考虑得周到吧 :smirk: (其实得感谢 @abinnz 和 @red3 在这个改进上面所提出的建议)
配置
配置文件主要是 src/main/resources/xiaov.properties:
- turing.api & turing.key 定义了图灵机器人的 API 地址和口令
- baidu.cookie 定义了百度机器人访问需要的 Cookie(登录百度,然后抓包)
- qq.bot.type 定义了机器人类型,1 是使用图灵机器人,2 则使用百度机器人
- qq.bot.name 定义了机器人的名字,这个主要是用于识别群消息是否“感兴趣”,比如对于群消息:“小薇,你吃过饭了吗?”包含了机器人的名字,机器人就对其进行处理
- qq.bot.key 定义了管理 QQ 或论坛发过来的消息群推的口令,需要消息开头是这个口令,验证过后才会群推后面的消息内容
- qq.bot.pushGroups 定义了群推的群名,用
,分隔多个群;也可以配置成*推送所有群 - qq.bot.pushGroupUserCnt 定义了群推时群人数的下限,只有大于等于这个人数的群才推送
- qq.bot.ack 定义了是否启用消息送达确认机制(小薇的守护),默认不启用
- bot.follow.keywords 定义了监听群消息时的关键词,碰到这些词就做处理,比如对于群消息:“如何能在 3 天内精通 Java 呢?”包含了关键词 Java,机器人就对其进行处理
- bot.follow.keywordAnswer 定义了监听群消息时出现了关键词后的回复模版
- forum.api & forum.key 定义了论坛 API 地址和口令,小薇会将所有监听到的消息通过该 API 转发到论坛
API
论坛推送 QQ 群
- 功能:小薇提供给论坛调用的 HTTP 接口,用于将论坛的内容推送到 QQ 群
- URL:/qq
- Method:POST
- QueryStr:key={qq.bot.key}&msg={msgcontent}(也可以放到 Body 里面)
- 例如:/qq?key=123456&msg=Hello
QQ 群推送论坛
- 功能:由论坛提供给小薇调用的 HTTP 接口,用于将 QQ 群消息推送到论坛(这个接口是论坛实现的,这里是给出小薇的调用方式和参数)
- URL:{forum.api}
- Method:POST
- QueryStr:key={forum.key}&msg={msgcontent}&user={hexuserid}
- 例如:/xiaov?key=123456&msg=Hello&user=0a
鸣谢
小薇的诞生离不开以下开源项目/产品服务:
- Smart QQ Java:封装了 SmartQQ(WebQQ)的 API,完成 QQ 通讯实现
- 图灵机器人:赋予了小薇抖机灵的能力
- 百度机器人:再次赋予了小薇抖机灵的能力
- 茉莉机器人:再再次赋予了小薇抖机灵的能力
- Latke:简洁高效的 Java Web 框架
其他教程
如果上面的文档看得一头雾水(作者语文高考差点不及格,见谅),请看下面由热心开发者提供的图文并茂、绘声绘色的、认真的教程:
PS:附送一批黑客派论坛注册邀请码:
wgXvmqHEZ119YoiE
FmQBnsAirHKFmdIU
rVXqTa27xnhl2vF8
CMQvkzQGQhKILw0A
aPBE2B3nEnFuA6xD
5kwXwkYDEMPF9jpt
LeAVaxR5L0HhkKYJ
3oNgY58dpDU3s7dT
HX21YNhK0Goz64S8
bHAnNbsJTIy0MlIx
如果邀请码都被使用了,请加 QQ 群 13139268 后找管理要吧 :-p
QQ 聊天机器人小薇 2.1.0 发布!的更多相关文章
- QQ 聊天机器人小薇 2.0.0 发布!
本次发布主要加入了支持讨论组聊天,并增强了稳定性.另外,官方小薇 QQ 机器人已经下线,大家要体验的话请 自建私服~ 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务, ...
- QQ 聊天机器人小薇 1.0.1 发布!
本次发布主要解决了消息丢失(Api返回码[1202])问题,并改进了改进了一些细节. 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 Q ...
- QQ 聊天机器人小薇发布!
简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 QQ 群消息,发现有"感兴趣"的内容时通过图灵机器人进行智能回复 监 ...
- QQ 聊天机器人API
QQ机器人是腾讯陆续推出的的人工智能聊天机器人的总称. 都说小Q妹妹聪明好学,我们能够教她说话.也能够请他帮忙查询邮编.手机号,或者解释成语.翻译成语,据说她还会查询手机号码归属地.应用科学计算器. ...
- QQ聊天机器人 Delphi代码
QQ聊天机器人 前几日,看到杂志上有一篇关于开发QQ聊天机器人的文章.谈到了对QQ循环发送消息内容,感觉倒也很好玩,于是拿起Delphi开始了我的QQ聊天机器人之路. 首先要明白自己要做什么, ...
- python3+qqBot+图灵机器人实现qq聊天机器人
原理: 通过Python3的qqBot开源库,基于腾讯的smartQQ协议登录个人QQ,实现监控.收集QQ消息,进而通过图灵机器人API接入方式实现自动聊天. 零.前期准备: 1.Python3 2. ...
- QQ聊天机器人for PHP版 (登录,收、发消息)
<?php include "http_no_cookie.class.php"; class qq { public $sid; public $http; public ...
- PIGCMS 关闭聊天机器人(小黄鸡)
无脑操作举例 1.找到 WeixinAction.class.php 文件,路径: 你的版本\PigCms\Lib\Action\Home 2.查询 function chat ,在 chat() 函 ...
- 调用聊天机器人 -小I机器人
public static string sendMsg2(string msg) { try { msg = Uri.EscapeDataString( msg); string sUrl = &q ...
随机推荐
- Machine learning 第5周编程作业
1.Sigmoid Gradient function g = sigmoidGradient(z) %SIGMOIDGRADIENT returns the gradient of the sigm ...
- CountDownLatch、CyclicBarrier和 Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法. 以下 ...
- 关于 maven 打包直接运行的 fat jar (uber jar) 时需要包含本地文件系统第三方 jar 文件的问题
关于maven打包fat jar (uber jar) 时需要包含本地文件系统第三方jar文件的问题,今天折腾了一整天.最后还是用了spring boot来做.下面是几篇关于打包的有参考价值的文章,以 ...
- RealVNC
使用Linux服务器,在一般情况下是不太用桌面环境的.不过现在我想着开发用Linux,如使用Pycharm这种IDE,还是很方便的.这样还是需要桌面环境的,然而我们位置不多,就将服务器的屏幕摘下了,那 ...
- VS2015 MSVCRTD.lib(_chandler4gs_.obj) : error LNK2019: unresolved external symbol __except_handler4_common referenced in function __except_handler4
今天在VS2015中用编译好的QT5静态库打包软件,配置好QT的静态环境后, 发现报MSVCRTD.lib(_chandler4gs_.obj) : error LNK2019: unresolved ...
- docker私有仓库搭建及认证
什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机 ...
- SOAP1.1 and SOAP1.2
在用cxf 做webservice客户端的时候碰到的: javax.xml.ws.soap.SOAPFaultException: A SOAP 1.2 message is not valid wh ...
- 【c++】友元
c++引入友元的原因 在某些情况下,允许特定的非成员函数访问类的私有成员.在类中以关键字friend开始(只能出现在类定义的内部),声明为友元的可以为类.类的成员函数.普通的非成员函数. 速览 #in ...
- Linux环境进程间通信(二): 信号--转载
http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html http://www.ibm.com/developerworks ...
- Java 动态代理机制分析及扩展--转
http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/#icomments http://www.ibm.com/developerworks/c ...