Skip to content

使用Perl语言编写的smartqq/webqq客户端框架(非GUI),可通过插件提供基于HTTP协议的api接口供其他语言或系统调用

Notifications You must be signed in to change notification settings

moboard/Mojo-Webqq

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mojo-Webqq v1.8.7 Build Status Join the chat at https://gitter.im/sjdy521/Mojo-Webqq

使用Perl语言编写的Smartqq客户端框架,基于Mojolicious,要求Perl版本5.10+,可通过插件提供基于HTTP协议的api接口供其他语言或系统调用

###郑重声明

本项目完全遵循网页QQ官方提供的原始聊天功能,不包含任何破解、盗号等行为,本项目完全开源,目的是为了促进技术交流学习,禁止任何商业盈利目的以及一切非法用途传播,否则后果自负

###特色功能

  • 支持 群组踢人、禁言、设置/取消管理员、修改群成员名片、邀请好友入群、群签到
  • 支持 获取好友、群组、群成员的真实QQ号码
  • 支持 新增/失去好友、新增/退出群组、新增/失去群成员 等事件提醒(非实时)
  • 支持 Windows/Linux/Mac 多平台,支持docker镜像,易安装部署,不懂Perl也能用
  • 提供 基于HTTP协议的API接口 ,简洁丰富,方便和其他编程语言集成
  • 主人人品极好,你懂的

###插件列表

名称 优先级 当前状态 github作者 功能说明
ShowMsg 100 已发布 sjdy521 打印客户端接收和发送的消息
GroupManage 100 已发布 sjdy521 群管理,入群欢迎、限制发图频率等
MsgSync 99 已发布 sjdy521 实现qq群和irc消息同步
IRCShell 99 已发布 sjdy521 Linux环境下通过irc客户端使用qq
Openqq 98 已发布 sjdy521 提供qq发送消息api接口
Perlcode 97 已发布 sjdy521 通过qq消息执行perl代码
Perldoc 96 已发布 sjdy521 通过qq消息查询perl文档
StockInfo 95 已发布 shalk 查询股票信息
ProgramCode 94 已发布 limengyu1990 通过qq消息执行代码,支持26种语言
Translation 93 已发布 sjdy521 多国语言翻译功能
MobileInfo 93 已发布 limengyu1990 手机号码归属地查询
Riddle 92 已发布 limengyu1990 输入"猜谜"关键字进行猜谜游戏
GasPrice 91 已发布 hyvinlam 输入"油价"关键字查询油价
KnowledgeBase2 3 已发布 sjdy521 自定义可编辑问答知识库
KnowledgeBase 2 已发布 sjdy521 通过qq消息自定义问答知识库
FuckDaShen 1 已发布 sjdy521 对消息中的"大神"关键词进行鄙视
Qiandao 1 已发布 sjdy521 QQ群每日签到
Pu         1       已发布     bollwarm 周易、占卜、算命、八卦等关键字触发占卜
ZiYue     1       已发布     bollwarm 子曰、论语、之乎者也等关键字触发论语语句
PostImgVerifycode 0 已发布 sjdy521 登录验证码发送到邮箱实现远程登录
PostQRcode 0 已发布 sjdy521 登录二维码发送到邮箱实现远程扫码
UploadQRcode 0 已发布 sjdy521 二维码上传腾讯云存储获得公网访问url
ShowQRcode 0 已发布 autodataming 调用系统图片查看程序来示二维码(目前仅支持win)
SmartReply 0 已发布 sjdy521 智能聊天回复

###效果展示

敲一行命令就能启动一个智能聊天机器人,Perl 和你都如此优雅. Enjoy!

cpanm Mojo::Webqq && perl -MMojo::Webqq -e "Mojo::Webqq->new->load('ShowMsg')->load('SmartReply')->run()"
[15/09/30 15:11:59] [info] 初始化 smartqq 客户端参数...
[15/09/30 15:11:59] [info] 检查验证码...
[15/09/30 15:11:59] [info] 检查结果: 很幸运,本次登录不需要验证码
[15/09/30 15:11:59] [info] 正在获取登录二维码...
[15/09/30 15:11:59] [info] 二维码已下载到本地[ /tmp/mojo_webqq_qrcode_xxx.png ]
[15/09/30 15:12:00] [info] 登录二维码已经发送到邮箱: ******
[15/09/30 15:12:00] [info] 等待手机QQ扫描二维码...
[15/09/30 15:12:43] [info] 手机QQ扫码成功,请在手机上点击[允许登录smartQQ]按钮...
[15/09/30 15:12:46] [info] 检查安全代码...
[15/09/30 15:12:47] [info] 设置登录验证参数...
[15/09/30 15:12:47] [info] 尝试进行登录(2)...
[15/09/30 15:12:47] [info] 登录成功
[15/09/30 15:12:47] [info] 更新个人信息...
[15/09/30 15:12:47] [info] 更新好友信息...
[15/09/30 15:12:47] [info] 更新[ PERL学习交流 ]信息
[15/09/30 15:12:52] [info] 更新[ Mojolicious ]信息
[15/09/30 15:12:55] [info] 开始接收消息...
[15/09/30 14:09:20] [群消息] 小灰|PERL学习交流 : Mojo::Webqq不错哦
[15/09/30 14:10:20] [群消息] 我->PERL学习交流 : 多谢多谢

###通过irc客户端在linux终端上使用QQ


    +-------------------+                      +----------------+  
    |  Tencent          |                      | Any IRC Client |
    |  SmartQQ Server   |                      | wechat、irssi  |
    +---v-------------^-+                      +-v------------^-+     
        |             |                          |            |
        | QQ协议交互  |                          |IRC协议交互 |
+-- --- |--  - -  --  | - - -   --   -  -   ---  | ---  ----- | --+
|   +---v-------------^--+                  +----v------------^-+ |   
|   |                    <——————————————————<                   | |
|   |   SmartQQ Client   |     QQ - IRC     |  IRC Server       | |
|   |                    |     协议转换     |  监听本机6667端口 | |
|   |                    >——————————————————>                   | | 
|   +--------------------+                  +-------------------+ |
|                                                                 |
|                                       我们程序实现的部分        | 
+---  - - - -  -- - --  ----  ------  -------  ------  ---    ----+

IRCShell

###IT男装逼利器:如何像黑客一样聊天(图片来自 @動感光波)

如何像黑客一样聊天

###安装方法

推荐使用cpanm在线安装或升级Mojo::Webqq模块, 如果使用docker方式请参见Docker镜像安装及使用方法

  1. 安装perl

    安装之前请先确认下你的系统是否已经安装了Perl,因为除了windows,其他大部分的平台默认都可能已经预装过

    并且你的Perl版本至少5.10.1+,推荐5.14+

    Perl官网下载页面 有包含Unix/Linux、Mac OS X、Windows多平台比较全面详细的安装说明

    建议大家尽量选择Binaries(二进制预编译)的版本,安装即可使用,比较方便

平台 推荐选择 下载地址
Windows 1. StrawberryPerl
2. ActivePerl
3. Mojo-StrawberryPerl
StrawberryPerl下载地址
ActivePerl下载地址
Mojo-StrawberryPerl下载地址
Linux 1. 系统自带
2. yum/apt等包管理器
3. 官方源码
4. ActivePerl
5. Mojo-ActivePerl
ActivePerl下载地址
Mojo-ActivePerl下载地址
Mac 1. 系统自带
2. ActivePerl
ActivePerl下载地址
注意:

[Mojo-ActivePerl](https://github.com/sjdy521/Mojo-ActivePerl)是我基于ActivePerl打包的而成

已经包含perl-5.22+cpanm+Mojo-Webqq+Mojo-Weixin的完整运行环境,适用于linux x86_64系统,并且系统glibc 2.15+

[Mojo-StrawberryPerl](https://github.com/sjdy521/Mojo-StrawberryPerl)是网友 **@那谁** 基于StrawberryPerl精简打包而成

已经包含perl-5.24+cpanm+Mojo-Webqq+Mojo-Weixin的完整运行环境,适用于windows 32位/64位系统
  1. 安装cpanm包管理工具(如果系统已经安装了cpanm可以忽略此步骤)

    方法a: 通过cpan安装cpanm

     $ cpan -i App::cpanminus
    

    方法b: 直接在线安装cpanm

     $ curl -kL https://cpanmin.us | perl - App::cpanminus
     
     官方服务器在国外,如果无法访问,可以选择下面的命令:
     
     $ curl http://share-10066126.cos.myqcloud.com/cpanm.pl|perl - App::cpanminus
    
  2. 使用cpanm在线安装 Mojo::Webqq 模块(如果系统已经安装了该模块,执行此步骤会对模块进行升级)

     $ cpanm Mojo::Webqq
    

    如果安装过程中一直提示下载失败,很可能是因为访问到国外服务器网络比较差

    这种情况下可以尝试按如下方式手动指定国内的镜像站点

     $ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Webqq
    
  3. 安装失败可能有帮助的解决方法

    如果你运气不佳,通过cpanm没有一次性安装成功,这里提供了一些可能有用的信息

    在安装 Mojo::Webqq 的过程中,cpan或者cpanm会帮助我们自动安装很多其他的依赖模块

    在众多的依赖模块中,安装经常容易出现问题的主要是 IO::Socket::SSL

    IO::Socket::SSL 主要提供了 https 支持,在安装过程中可能会涉及到SSL相关库的编译

    对于 Linux 用户,通常采用的是编译安装的方式,系统缺少编译安装必要的环境,则会导致编译失败

    对于 Windows 用户,由于不具备良好的编译安装环境,推荐采用一些已经打包比较全面的Perl运行环境

    例如比较流行的 strawberryperl 或者 activeperl 的最新版本都默认包含 Mojo::Webqq 的核心依赖模块

    RedHat/Centos:

     $ yum install -y openssl-devel
    

    Ubuntu:

     $ sudo apt-get install libssl-dev
    

    搞定了编译和运行环境之后,再重新回到 步骤2 安装Mojo::Webqq即可

###如何使用

  1. 我对Perl很熟悉,是一个专业的Perler

    该项目是一个纯粹的Perl模块,已经发布到了cpan上,请仔细阅读 Mojo::Weqq 模块的使用文档

    除此之外,你可以看下 demo 目录下的更多代码示例

  2. 我是对Perl不熟悉,是一个其他语言的开发者,只对提供的消息发送/接收接口感兴趣

    可以直接把如下代码保存成一个源码文件(必须是UTF-8编码),使用 perl 解释器来运行

     #!/usr/bin/env perl
     use Mojo::Webqq;
     my ($qq,$host,$port,$post_api);
     
     $qq = 12345678;    #修改为你自己的实际QQ号码
     $host = "0.0.0.0"; #发送消息接口监听地址,修改为自己希望监听的地址
     $port = 5000;      #发送消息接口监听端口,修改为自己希望监听的端口
     #$post_api = 'http://xxxx';  #接收到的消息上报接口,如果不需要接收消息上报,可以删除或注释此行
     
     my $client = Mojo::Webqq->new(qq=>$qq);
     $client->load("ShowMsg");
     $client->load("Openqq",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api});
     $client->run();
    

    上述代码保存成 xxxx.pl 文件,然后使用 perl 来运行,就会完成 QQ 登录并在本机产生一个监听指定地址端口的 http server

     $ perl xxxx.pl
    

    发送好友消息的接口调用示例

     http://127.0.0.1:5000/openqq/send_message?qq=xxxxx&content=hello
     
     * About to connect() to 127.0.0.1 port 5000 (#0)
     *   Trying 127.0.0.1...
     * Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
     > GET /openqq/send_message?qq=xxxxx&content=hello HTTP/1.1
     > User-Agent: curl/7.29.0
     > Host: 127.0.0.1:5000
     > Accept: */*
     > 
     < HTTP/1.1 200 OK
     < Content-Type: application/json;charset=UTF-8
     < Date: Sun, 13 Dec 2015 04:54:38 GMT
     < Content-Length: 52
     < Server: Mojolicious (Perl)
     <
     * Connection #0 to host 127.0.0.1 left intact
     
     {"status":"发送成功","msg_id":23910327,"code":0}
    

    更多接口参数说明参见API说明文档

  3. 我是一个极客,我只想能够在命令行上通过 IRC 的方式来玩转 QQ 聊天

    请阅读IRCShell插件使用步骤

  4. 我是一个 QQ 群主或管理员,我想给自己的群加个机器人群管理功能

    请关注 GroupManage 插件使用文档

###核心依赖模块

###相关文档

###官方交流

###友情链接

JavaScript

  • webqqircd 用IRC客户端控制WebQQ(SmartQQ),类似于wechatircd
  • qqbot SmartQQ Robot and API Server, powered by node.js
  • qqbot 基于SmartQQ(WebQQ)的QQ机器人 / a qq robot based on smartqq(webqq) api

Python

  • SmartQQBot 基于SmartQQ的自动机器人框架
  • qqbot A conversation robot base on Tencent's SmartQQ

Java

  • smartqq SmartQQ(WebQQ)的Api ,你可以用它实现自己的QQ 机器人

###捐赠奖励

可以通过扫描支付宝付款二维码进行捐赠,感谢您的支持和鼓励

donate

特别致谢 那些曾经捐赠的小伙伴们

###COPYRIGHT 和 LICENCE

Copyright (C) 2014 by sjdy521

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.

About

使用Perl语言编写的smartqq/webqq客户端框架(非GUI),可通过插件提供基于HTTP协议的api接口供其他语言或系统调用

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Perl 97.8%
  • Other 2.1%
  • Shell 0.1%