/qqbot

QQ 聊天机器人

Primary LanguageJavaScriptMIT LicenseMIT

SmartQQ-Bot

SmartQQ-Bot powered by node.js

FYI: QQ is a instant messaging service widely used in china provided by Tencent. SmartQQ is the web implmentation.

基于 WebQQ 的机器人。原项目是 Xu Han 用 CoffeeScript 开发,这是一个很棒的项目。Raymond Xie 主要增加了对 二维码扫描认证登陆的支持。这个版本全部代码转换为 javascript,并且发布为 npm 包,无需配置,安装即可使用,更加方便。

SmartQQ-Bot

Features

  • 手机QQ二维码扫描登录,貌似这是目前 WebQQ 唯一允许的登录方式
  • 支持好友,群,讨论组的接入
  • 插件化,目前支持消息的派发
  • 提供HTTP API支持(比如群通知什么的都能做哦)
  • 除了 qqbot,还附带了一个命令行的 qq 来连接 qqbot,可以用来显示好友、群组列表,发送消息等操作
  • 通过对 poll 信息的分析,自动重新登录,提高了稳定性
  • 移除了扫描二维码之后的键盘输入,改为自动轮询二维码扫描结果
  • nohup qqbot &, 使 qqbot 在后台运行,stdout 结果重定向到 nohup.out

你可以用TA来

经典案例:

  • 持续集成自动通知 (这是软件项目开发必备的,也是我使用并改进 qqbot 最初的原因 --- Raymond)
  • 用来集成团队协作系统的消息推送(有QQ消息推送的看板系统,是真的即时沟通 --- Raymond)

其它可能的用途:

  • 监控报警机器人(监控报警啊什么的,对于天天做电脑前,报警还得通过邮件短信提醒多不直接呢)
  • 辅助管理群成员,比如自动清理刷屏用户啊(请自己实现)
  • 聊天机器人(请自己实现AI)
  • 部署机器人(请了解hubot的概念)

Installation

$ [sudo] npm install -g smartqq-bot

Usage as Standalone Robot

$ qqbot
  • 执行 qqbot 启动 SmartQQ-Bot,会从QQ服务器请求二维码图片。 ** 如果是 Mac 系统,会打开图片文件,进行扫描。 ** 如果是其他系统的话,则会启动一个 http服务器,请用浏览器访问 http://本机IP:3100/ 显示二维码,进行扫描。

  • 用手机QQ扫描二维码,并选择允许 smartQQ 登录

  • qqbot 自动检测二维码扫描结果,进入运行状态

  • 接下来,可以用其他的程序访问 qqbot 的 apiserver,调用 SmartQQ-Bot 的功能,协议为: http://localhost:3200/send?type=[group|buddy|discuss]&to=[qqnumber/nick/gname]&msg=[msg]

  • 或者,用附带的命令行的 qq,访问启动后 qqbot,可以用来显示好友、群组列表,发送消息等操作

$ qq list buddy
$ qq list group
$ qq send buddy {qq_number/nick} {msg}
$ qq send group {group_number/gname} {msg}
$ qq quit

qq 命令行也可以向在其他主机上启动的 qqbot 发请求,只需指定 ip 及可选端口 -h host -p port, host 默认是 localhost, port 默认是 3200.

qqbot 也可以在后台运行,启动命令为:

nohup qqbot &

此时 stdout 的输出重定向到文件 nohup.out,不在屏幕显示。

参考资料

  • CHANGELOG.md
  • WebQQ协议
  • 访问 http://w.qq.com/ ,事实上,了解 WebQQ 协议更直接的方式,是通过 Chrome 打开“审查元素”模式,观察和服务器之间的网络交互

TODO

  • 用户信息,qq号等
  • 机器人响应前缀
  • 图片发送支持

Credits

  • QQBot 主要由 xhan 从 2013年12月开始,陆陆续续实现绝大部分功能。
  • Raymond Xie 于 2015年10月 增加了 手机QQ二维码扫描认证登陆。