QQ 聊天机器人小薇发布!
简介
XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动:
- 监听多个 QQ 群消息,发现有“感兴趣”的内容时通过图灵机器人进行智能回复
- 监听到的 QQ 群消息可以配置推送到论坛某个接口上,以实现论坛弹幕或者动态聚合效果,请看实例
- 在论坛代码中调用小薇进行 QQ 消息推送,比如论坛有新帖时自动推送到 QQ 群
- 加小薇为好友后可通过暗号(key)让她群发消息
总之,如果你需要一个连通 QQ 群和论坛的机器人,小薇是个不错的选择 :smirk:
作者
小薇她爸 Daniel,妈 Vanessa,其他好心人可以在这里看到。
FAQ
为什么要单独做成一个 Web 服务,而不是一个依赖 jar?
做成依赖库的话会随应用部署,从开发的角度是比较方便,但有个致命的问题是应用一般是部署在云端,而登录扫码是在本地,这样会造成 QQ 的异地登录,导致很多问题。
所以需要将小薇部署在本地,保证用手机和小薇启动后 QQ 不出现异地登录。但是这也需要解决一个问题,即需要为小薇提供“内网穿透”的能力,比如使用 ngrok,具体可参考这里。
为什么会出现“发送失败,Api返回码[1202]”?
这个问题是因为 QQ 服务器判断消息有问题时的返回,具体可关注这个 issue。
启动
- 安装好 Java 1.7+、Maven 2+
- Clone 本项目,并在项目根目录上执行
mvn jetty:run
这样就可以使用默认的配置文件启动小薇了。
配置
配置文件主要是 src/main/resources/xiaov.properties:
- api.key 定义了论坛调用小薇时用于验证的口令
- turing.api & turing.key 定义了图灵机器人的 API 地址和口令
- qq.bot.name 定义了机器人的名字,这个主要是用于识别群消息是否“感兴趣”,比如对于群消息:“小薇,你吃过饭了吗?”包含了机器人的名字,机器人就对其进行处理
- qq.bot.key 定义了管理 QQ(加了机器人为好友的 QQ)发过来的消息群发的口令,需要消息开头是这个口令,验证过后才会群发后面的消息内容
- qq.bot.pushGroups 定义了群发的群名,用
,
分隔多个群 - bot.follow.keywords 定义了监听群消息时的关键词,碰到这些词就做处理,比如对于群消息:“如何能在 3 天内精通 Java 呢?”包含了关键词 Java,机器人就对其进行处理
- forum.api & forum.key 定义了论坛 API 地址和口令,小薇会将所有监听到的消息通过该 API 转发到论坛
API
论坛推送 QQ 群
- 功能:小薇提供给论坛调用的 HTTP 接口,用于将论坛的内容推送到 QQ 群
- URL:/qq
- Method:POST
- Body:key={api.key}&msg={msgcontent}
QQ 群推送论坛
- 功能:由论坛提供给小薇调用的 HTTP 接口,用于将 QQ 群消息推送到论坛(这个接口是论坛实现的,这里是给出小薇的调用方式和参数)
- URL:{forum.api}
- Method:POST
- Body:key={forum.key}&msg={msgcontent}&user={hexuserid}
鸣谢
小薇的诞生离不开以下开源项目/产品服务:
- Smart QQ Java:封装了 SmartQQ(WebQQ)的 API,完成 QQ 通讯实现
- 图灵机器人:给予了小薇抖机灵的能力….
- Latke:简洁高效的 Java Web 框架
QQ 聊天机器人小薇发布!的更多相关文章
- QQ 聊天机器人小薇 2.1.0 发布!
本次发布加入了支持茉莉机器人,并且更容易搭建开发环境,在线显示登录二维码~ 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 QQ 群消息 ...
- QQ 聊天机器人小薇 2.0.0 发布!
本次发布主要加入了支持讨论组聊天,并增强了稳定性.另外,官方小薇 QQ 机器人已经下线,大家要体验的话请 自建私服~ 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务, ...
- QQ 聊天机器人小薇 1.0.1 发布!
本次发布主要解决了消息丢失(Api返回码[1202])问题,并改进了改进了一些细节. 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 Q ...
- 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 ...
随机推荐
- ReactNative常用命令
常用命令整理备忘 创建项目: react-native init myProject 安装RN初始化命令: yarn add react-native-cli 引用组件: npm install re ...
- Mysql:如果数据存在则更新,不存在则插入
mysql语法支持如果数据存在则更新,不存在则插入,首先判断数据存在还是不存在的那个字段要设置成unique索引, 例如表tb_addrbook如下: 索引: 语句1:不存在插入 INSERT INT ...
- ORM中的一对一和多对多
ORM中的一对一和多对多 Django ORM ORM 一对一 什么时候用一对一? 当 一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁 把不怎么常用的字段 单独拿出来做成一张表 然 ...
- java.math.BigDecimal cannot be cast to java.lang.Integer
问题来源: 在数据库中查询一个列表的长度时,需要转换为Integer类型,我刚开始直接转就报错了.因为在数据库中用count(*) 聚合函数返回的值类型为BigDecimal,不能直接转换为Integ ...
- 榨取kkksc03 多维dp
榨取kkksc03 多维dp 题面:洛谷 P1855 榨取kkksc03 一道简单的动态规划,背包再加一维费用,首先可以易得三维动态规划转移方程 \[ dp[i][j][w]=\left\{ \beg ...
- 当Appium中遇到alert(python篇)
当Appium中遇到alert,可以使用switch_to_alert(),以下是微信登录切换登录方式的代码示例: #coding=utf-8 from appium import webdriver ...
- google hack使用集锦
转载:https://blog.csdn.net/weixin_42127015/article/details/84472777 关于google hack的几个基础过滤器使用[请务必谨记,过滤器虽 ...
- js复习知识点
null和undefined具体在什么时候使用? 如果定义的变量准备用来保存对象,那么最好用将改变量初始化为null而不是其他值 如果未定义的值可以用空字符 undefined是null派生出来的,所 ...
- html5在手机熄屏后倒计时会出现延迟情况
今天开发了一个手机端的倒计时,然后同事说出现了Bug,怎么回事呢?Bug很简单,就是在手机返回主界面或者熄屏后倒计时会暂停在熄屏前的时间(注意时间是页面加载时获取的服务器的时间),问题很简单,知道问题 ...
- svn: Failed to run the WC DB work queue associated svn的bug解决
第一步,下载sqlite 官方网址 :https://www.sqlite.org/download.html 第二步:解压放在c盘 第三步:配置环境变量 第四步:找到工作空间的.svn文件,cmd ...