Git Product home page Git Product logo

hexsum / mojo-webqq Goto Github PK

View Code? Open in Web Editor NEW
1.7K 118.0 322.0 5.46 MB

【重要通知:WebQQ将在2019年1月1日停止服务,此项目目前已停止维护,感谢大家四年来的一路陪伴】使用Perl语言(不会没关系)编写的smartqq/webqq客户端框架(非GUI),可通过插件提供基于HTTP协议的api接口供其他语言或系统调用

License: BSD 2-Clause "Simplified" License

Perl 94.18% Perl 6 5.56% Dockerfile 0.25%
smartqq webqq perl mojo api irc chatbot chat qqbot docker qq bot cli

mojo-webqq's Introduction

Mojo-Webqq v2.2.7 Build Status Join the chat at https://gitter.im/sjdy521/Mojo-Webqq API列表 QQ群-498880156 IRC

!!!重要通知:WebQQ将在2019年1月1日停止服务,项目目前已停止维护,感谢大家四年来一路陪伴

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

郑重声明

本项目完全遵循QQ官方提供的原始功能,不包含任何破坏、盗号等行为,本项目完全开源,目的是为了促进技术交流学习,禁止任何对国家、企业、个人等构成危害的非法用途,否则后果自负

特色功能

  • 支持 账号密码登录(可能已失效),二维码扫码登录
  • 支持 群组踢人、禁言、设置/取消管理员、修改群成员名片、邀请好友入群、群签到(可能失效)
  • 支持 获取好友、群组、群成员的真实QQ号码(可能失效)
  • 支持 新增/失去好友、新增/退出群组、新增/失去群成员 等事件提醒(非实时)
  • 支持 Windows/Linux/Mac 多平台,支持docker镜像,易安装部署,不懂Perl也能用
  • 提供 基于HTTP协议的API接口 ,简洁丰富,方便和其他编程语言集成
  • 一个产品经理的倾情之作,代码由内而外都更加注重“用户体验”,外加主人人品极好,你会懂的

插件列表

名称 优先级 当前状态 github作者 功能说明
ShowMsg 100 已发布 sjdy521 打印客户端接收和发送的消息
GroupManage 100 已发布 sjdy521 群管理,入群欢迎、限制发图频率等
IRCShell 99 已发布 sjdy521 Linux环境下通过irc客户端使用qq
Openqq 98 已发布 sjdy521 提供qq发送消息api接口
Perlcode 97 已发布 sjdy521 通过qq消息执行perl代码
Perldoc 96 已发布 sjdy521 通过qq消息查询perl文档
Translation         93       已发布 sjdy521 多国语言翻译功能
KnowledgeBase 3 已发布 sjdy521 自定义可编辑问答知识库
Qiandao 1 已发布 sjdy521 QQ群每日签到
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男装逼利器:如何像黑客一样聊天(图片来自 @動感光波)

如何像黑客一样聊天

更多应用效果 请参见Mojo-Webqq作品展

安装方法

推荐使用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下载地址
    Mojo-StrawberryPerl下载地址
    ActivePerl下载地址
    Linux   1. 系统自带
    2. yum/apt等包管理器
    3. 官方源码编译
    4. ActivePerl
    5. DWIM-Perl
    ActivePerl下载地址
    DWIM-Perl下载地址
    Mac 1. 系统自带
    2. ActivePerl
    ActivePerl下载地址

    注意:

    Mojo-StrawberryPerl是基于StrawberryPerl精简打包而成,适用于windows 32位/64位系统

  2. 安装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
    
  3. 使用cpanm在线安装 Mojo::Webqq 模块(如果系统已经安装了该模块,执行此步骤会对模块进行升级)

     $ cpanm Mojo::Webqq
    

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

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

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

    如果你运气不佳,通过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即可

    请尽量在root下安装使用,非root下安装使用参考FAQ

    如果仍然有问题,Linux上可以尝试执行如下脚本进行依赖模块检查

     $ curl -ks "https://raw.githubusercontent.com/sjdy521/Mojo-Webqq/master/script/check_dependencies.pl"|perl -
    

如何使用

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

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

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

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

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

     #!/usr/bin/env perl
     use Mojo::Webqq;
     my ($host,$port,$post_api);
     
     $host = "0.0.0.0"; #发送消息接口监听地址,没有特殊需要请不要修改
     $port = 5000;      #发送消息接口监听端口,修改为自己希望监听的端口
     #$post_api = 'http://xxxx';  #接收到的消息上报接口,如果不需要接收消息上报,可以删除或注释此行
     
     my $client = Mojo::Webqq->new();
     $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_friend_message?uid=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_friend_message?uid==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 BSD 2-clause "Simplified" license

mojo-webqq's People

Contributors

autodataming avatar bollwarm avatar btbxbob avatar gitter-badger avatar heipidage avatar hexsum avatar huangzhongzhang avatar hubertzhang avatar hyvinlam avatar kotomei avatar liaobin avatar mr-bubble avatar neilb avatar shalk avatar strangemk2 avatar timeliar avatar tusooa avatar vizv avatar wsdjeg avatar xz-dev avatar yes1do avatar zhewangfunplus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mojo-webqq's Issues

http://d.web2.qq.com/channel/login2 403 Forbidden

[15/12/09 11:37:12] [info] 正在获取登录二维码...
[15/12/09 11:37:13] [info] 清除残留的历史二维码图片
[15/12/09 11:37:13] [info] 二维码已下载到本地[ /tmp/mojo_webqq_qrcode_xxxxx.png ]
[15/12/09 11:37:13] [info] 等待手机QQ扫描二维码...
[15/12/09 11:37:32] [info] 手机QQ扫码成功,请在手机上点击[允许登录smartQQ]按钮...
[15/12/09 11:37:35] [info] 检查安全代码...
[15/12/09 11:37:36] [info] 获取数据验证参数...
[15/12/09 11:37:36] [info] 尝试进行登录(2)...
[15/12/09 11:37:37] [warn] http://d.web2.qq.com/channel/login2 请求失败: 403 Forbidden
[15/12/09 11:37:43] [warn] http://d.web2.qq.com/channel/login2 请求失败: 403 Forbidden
[15/12/09 11:37:44] [warn] http://d.web2.qq.com/channel/login2 请求失败: 403 Forbidden
[15/12/09 11:37:44] [warn] http://d.web2.qq.com/channel/login2 请求失败: 403 Forbidden
[15/12/09 11:37:50] [warn] http://d.web2.qq.com/channel/login2 请求失败: 403 Forbidden
[15/12/09 11:37:50] [warn] http://d.web2.qq.com/channel/login2 请求失败: 403 Forbidden
[15/12/09 11:37:50] [warn] http://d.web2.qq.com/channel/login2 请求失败: 403 Forbidden
[15/12/09 11:37:50] [fatal] 登录失败,客户端退出(可能网络不稳定,请多尝试几次)

smartReply doesn't work

不知道有没有人注意到使用图灵 api 的智能回复不能工作了。
我不会 perl,所以没有去看。哪位有空看看是否是这样。

403 Forbidden 错误 及 其他一些问题

控制台完整信息:

[17/02/11 23:41:22] [info] 当前正在使用 Mojo-Webqq v2.0.4
[17/02/11 23:41:22] [�[33mwarn�[0m] �[33m当前版本与1.x.x版本不兼容,改动详情参见更新日志�[0m 
[17/02/11 23:41:22] [info] 执行插件[ Mojo::Webqq::Plugin::ShowQRcode ]
[17/02/11 23:41:22] [info] 执行插件[ Mojo::Webqq::Plugin::GroupManage ]
[17/02/11 23:41:22] [info] 执行插件[ Mojo::Webqq::Plugin::Openqq ]
[17/02/11 23:41:22] [info] Listening at "http://0.0.0.0:5000"
Server available at http://0.0.0.0:5000
[17/02/11 23:41:22] [info] 执行插件[ Mojo::Webqq::Plugin::KnowledgeBase ]
[17/02/11 23:41:22] [info] 执行插件[ Mojo::Webqq::Plugin::FuckDaShen ]
[17/02/11 23:41:22] [info] 执行插件[ Mojo::Webqq::Plugin::Qiandao ]
[17/02/11 23:41:22] [info] 客户端加载cookie[ C:\Users\Eldath\AppData\Local\Temp\mojo_webqq_cookie_default.dat ]
[17/02/11 23:41:22] [info] 初始化 smartqq 客户端参数...
[17/02/11 23:41:24] [info] 正在获取登录二维码...
[17/02/11 23:41:24] [info] 二维码已下载到本地[ C:\Users\Eldath\AppData\Local\Temp\mojo_webqq_qrcode_default.png ]
[17/02/11 23:41:24] [warn] https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-23-19230&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10194&login_sig=&pt_randsalt=0 请求(0/5)失败: 403 Forbidden
[17/02/11 23:41:24] [warn] https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-23-19230&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10194&login_sig=&pt_randsalt=0 请求(1/5)失败: 403 Forbidden
[17/02/11 23:41:24] [warn] https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-23-19230&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10194&login_sig=&pt_randsalt=0 请求(2/5)失败: 403 Forbidden
[17/02/11 23:41:24] [warn] https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-23-19230&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10194&login_sig=&pt_randsalt=0 请求(3/5)失败: 403 Forbidden
[17/02/11 23:41:24] [warn] https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-23-19230&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10194&login_sig=&pt_randsalt=0 请求(4/5)失败: 403 Forbidden
[17/02/11 23:41:24] [warn] https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-23-19230&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10194&login_sig=&pt_randsalt=0 请求(5/5)失败: 403 Forbidden
[17/02/11 23:41:24] [fatal] 登录失败,客户端退出(可能网络不稳定,请多尝试几次)
[17/02/11 23:41:24] [info] 清除残留的历史二维码图片
[17/02/11 23:41:24] [info] 清除残留的pid文件
[17/02/11 23:41:24] [info] 客户端停止运行

从2.11(或更早)开始就出现此错误,2.1之前此错误未出现。
尝试过手动退出smartqq,仍不能解决问题。


又及:控制台有一些消息显示可能不太正常,例如:

[17/02/11 23:41:22] [�[33mwarn�[0m] �[33m当前版本与1.x.x版本不兼容,改动详情参见更新日志�[0m     

又又及:程序会将-4返回码识别为“发送失败”,但实际上发送成功,导致一条消息被重复发送五次。只能手动修改Webqq.pm文件解决。

OpenQQ中auth函数无法修改消息内容

我想实现在本地端加密消息内容在Mojo端解密
因此要将请求中的content参数解密后重新赋值为明文
但是一直没能成功,代码如下:

image

谷歌了一下感觉应该是引用的问题,但是依旧没能解决,求解,谢谢

基于 Alpine 的 Docker 镜像无法运行

运行到“加载插件 Openqq”的时候程序就退出了,不知道哪里没弄对。以下是 Dockerfile:

FROM alpine
MAINTAINER bdbai <[email protected]>
COPY . /app
WORKDIR /app/docker-image
RUN apk update \
    && apk add --no-cache perl build-base wget openssl openssl-dev perl-dev \
    && cpan App::cpanminus \
    && cpanm install Net::SSLeay \
    && cpan -iT .. \
    && apk del build-base wget openssl-dev perl-dev
WORKDIR /app
CMD perl -MMojo::Webqq -e 'Mojo::Webqq->new(log_encoding=>"utf8")->load(["ShowMsg","UploadQRcode"])->load("Openqq",data=>{listen=>[{port=>$ENV{MOJO_WEBQQ_PLUGIN_OPENQQ_PORT}//5000}],post_api=>$ENV{MOJO_WEBQQ_PLUGIN_OPENQQ_POST_API}})'

麻烦了~

新2.0 bata API测试

通过手动调用接口(除了管理接口)都已经通过没问题,除了在发送消息时候如果消息中间有空格(空格和tab)都会失败。:

1、测试成功用例(包括预期失败的调用)

curl http://127.0.0.1:5000/openqq/get_friend_info
curl http://127.0.0.1:5000/openqq/get_group_basic_info >bgroup.list
curl "http://127.0.0.1:5000/openqq/send_friend_message?uid=30705478&content=%e4%bd%a0%e5%a5%bd"
curl "http://127.0.0.1:5000/openqq/send_friend_message?uid=30705478&content='你好'"
curl "http://127.0.0.1:5000/openqq/send_friend_e&content='你好'"
curl "http://127.0.0.1:5000/openqq/send_friend_message?uid=30705478&content='你好'"
curl "http://127.0.0.1:5000/openqq/send_friend_message?uid=&content='你好'"
curl "http://127.0.0.1:5000/openqq/send_friend_message?uid=308165330&content='你好的'"(不是好友,不成功)
curl "http://127.0.0.1:5000/openqq/send_group_message?uid=498880156&content='群消息测试\n中文\rtest'"
curl "http://127.0.0.1:5000/openqq/send_group_message?uid=498880156&content='群消息测试\n中文\ rtest'"
curl 'http://127.0.0.1:5000/openqq/send_group_message?uid=498880156&content="群消息测试\n中文\\rtest"'
curl 'http://127.0.0.1:5000/openqq/send_group_message?uid=498880156&content="群消息测试\n中文\\@桔子rtest"'
curl 'http://127.0.0.1:5000/openqq/send_group_message?uid=498880156&content="群消息测试\n中文@桔子rtest"'
curl 'http://127.0.0.1:5000/openqq/send_group_message?uid=498880156&content="群消息测试\n中文\\@桔子/wxrtest"'
curl 'http://127.0.0.1:5000/openqq/send_group_message?uid=498880156&content=/pz'
curl http://127.0.0.1:5000/openqq/search_friend?uid=30705478
curl 'http://127.0.0.1:5000/openqq/search_group?uid=498880156'
curl 'http://127.0.0.1:5000/openqq/shutup_group_member?uid=498880156&member_uid=874490076&time=20'(不是管理员,不成功)

2、连个失败的测试用例:

curl "http://127.0.0.1:5000/openqq/send_friend_message?uid=qq号&content='你 好的'"
curl "http://127.0.0.1:5000/openqq/send_group_message?uid=498880156&content='群消息测试\n中文\\ rtest'"

另外 curl http://127.0.0.1:5000/openqq/get_discuss_info 获取为空,是不是不在支持这功能

GroupManage插件改进意见

群管理插件,强烈希望能指定管理某个qq群,可以自己设置一个或多个qq群号,进行管理。
还有就是现在发图片限制无法工作了,希望能看情况修复。

make test 错误

root@debian7:~/target/Mojo-Webqq# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/https.t ........ Can't locate Mojo/UserAgent.pm in @INC (@INC contains: /root/target/Mojo-Webqq/blib/lib /root/target/Mojo-Webqq/blib/arch /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at t/https.t line 8.
BEGIN failed--compilation aborted at t/https.t line 8.
t/https.t ........ Dubious, test returned 2 (wstat 512, 0x200)
No subtests run 
t/load_module.t .. 1/1 
#   Failed test 'use Mojo::Webqq;'
#   at t/load_module.t line 8.
#     Tried to use 'Mojo::Webqq'.
#     Error:  Base class package "Mojo::Base" is empty.
#     (Perhaps you need to 'use' the module which defines that package first,
#     or make that module available in @INC (@INC contains: /root/target/Mojo-Webqq/blib/lib /root/target/Mojo-Webqq/blib/arch /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .).
#  at /root/target/Mojo-Webqq/blib/lib/Mojo/Webqq.pm line 4
# BEGIN failed--compilation aborted at /root/target/Mojo-Webqq/blib/lib/Mojo/Webqq.pm line 4.
# Compilation failed in require at (eval 4) line 2.
# BEGIN failed--compilation aborted at (eval 4) line 2.
# Looks like you failed 1 test of 1.
t/load_module.t .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests 

Test Summary Report
-------------------
t/https.t      (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/load_module.t (Wstat: 256 Tests: 1 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
Files=2, Tests=1,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.01 cusr  0.00 csys =  0.04 CPU)
Result: FAIL
Failed 2/2 test programs. 1/1 subtests failed.
make: *** [test_dynamic] Error 1

二维码登录成功,但是更新群列表失败

[15/09/30 22:05:00] [warn] 更新群列表信息失败
[15/09/30 22:05:00] [warn] 更新群列表信息失败
[15/09/30 22:05:00] [warn] 更新群列表信息失败
[15/09/30 22:05:00] [info] 正在进行重新连接...
[15/09/30 22:05:00] [info] 重新连接成功
[15/09/30 22:05:00] [warn] 更新群列表信息失败
[15/09/30 22:05:00] [warn] 更新群列表信息失败
[15/09/30 22:05:00] [warn] 更新群列表信息失败
[15/09/30 22:05:00] [info] 正在进行重新连接...

看了一眼代码,好像也没有区别的地方,奇怪了。。

群管理插件的bug

�就是加群提示和离群提示 对我设置的allow group之外的群也起作用的问题,
理论上应该是群管理插件所有功能只对allowgroup起作用才对

PostQRcode插件邮件参数支持不完整

如tls参数,QQ企业邮箱发送好像必须设置该参数。

    my($is_success,$err) = $client->mail(
           # 是否直接使用 %$data 更灵活些?
            smtp=>$data->{smtp},
            port=>$data->{port},
            user=>$data->{user},
            pass=>$data->{pass},
            from=>$data->{from},
            to  =>$data->{to},
            subject=>$subject,
            data=>$mime->as_string,
        );

还有个小问题就是,QQ邮件收到的正文显示乱码

openqq插件的改进意见

目前各种post到外部api地址的json消息里面不包含发送者qq号或者接收者qq号,群号码,这样外部程序很难对消息进行下一步的判断和操作,建议加上这些信息。

代理网络下安装webqq失败。

$sudo cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Webqq
[sudo] cymode 的密码:
--> Working on Mojo::Webqq
Fetching http://mirrors.163.com/cpan/authors/id/S/SJ/SJDY/Mojo-Webqq-1.8.3.tar.gz ... OK
Configuring Mojo-Webqq-v1.8.3 ... OK
Building and testing Mojo-Webqq-v1.8.3 ... FAIL
! Installing Mojo::Webqq failed. See /home/cymode/.cpanm/work/1469589269.17526/build.log for details. Retry with --force to force install it.

下面是log的内容

http://paste.ubuntu.com/21097102/

能否增加点歌和定时发送消息功能

先感谢灰灰为我们提供了这个非常不错的QQ文案。
提两个建议,灰灰酌情看能不能采纳实现:

  1. QQ里有个“音乐”功能,可不可以实现这个功能呢?通过指令点歌,原版qq可以在窗口里插放,linux及其它的给一个音视频链接,用户决定是不是要调用外部播放器播放。
  2. 定时发送消息到不同群或者不同好友。这个可以用来商用,发广告(当然得有限制)。

post api插件bug

我发现一个问题 腾讯新闻会主动推新闻给机器人,机器人收到的是一堆xml

似乎有时候群消息发不出去

我部署到服务器之后群消息似乎发不出去,log 里显示发了,但是没有收到,在本机开的时候,是可以的,是因为腾讯的异地登录限制吗……

【通知】Mojo-Webqq正在进行2.0版本重构,将和现有的1.x.x版本不兼容

新版本将进行大量的重构,以便和Mojo-Weixin项目尽量统一,清理杂乱代码,同时增加更多新的特性,不清楚有多少人正在使用这个项目,没办法一一通知到,可能的变更包括:

  • 对象属性的重新命名,比如
    1)消息对象
    原先的msg_class/msg_id/msg_from等变更为class/id/from,去掉msg_开头
    好友消息类型从 message -> friend_message
    2)对象属性
    nick->name
    qq->uid
    gname -> name
    gnumber -> uid
    gtype -> role
    did -> id

  • 对象属性变化也会体现在Openqq的接口接口地址和上报的数据和请求参数中
    1)/openqq/send_message -> /openqq/send_friend_message
    2) 请求参数中的使用id/uid/group_id/discuss_id等,不再支持原有的gid/gnumber/did

  • 内部编码进行了统一,尽量去unicode,http_get/http_post 提交和获取的json数据,可以直接使用utf8编码字节流,不再需要encode/decode转换

  • 内建$client->encode/decode/encode_utf8/from_json/to_json等方法,不再需要自己加载外部的Encode模块等

  • 日志新增msg级别,debug|info|msg|warn|error|fatal 专用与打印接收和发送的消息,方便和系统其他级别日志做区分

  • 去掉了单进程多帐号的支持,每个进程只能支持一个帐号,后续会类似Mojo-Weixin提供Mojo::Webqq::Controller来统一管理多账号

  • Mojo::Webqq->new(qq=>xxxx) 变更为 Mojo::Webqq->new(account=>xxxx) account可以自定义,不再强制要求使用qq号

  • 新增终端彩色日志打印,需要先安装Term::ANSIColor模块

Exception when receviced a new_group_member message.

[17/01/06 14:44:41] [info] 更新群组[ 这是一个群 ]信息
[17/01/06 14:44:42] [info] 更新群组[ 这是一个群 ]成员扩展信息
[17/01/06 14:44:42] [error] Can't call method "to_json_hash" on an undefined value at /Users/kliner/perl5/lib/perl5/Mojo/Webqq/Plugin/Openqq.pm line 69.

openQQ发送群消息请求成功, 但实际没有发出去

使用openQQ发送群消息, POST JSON格式数据:

http://127.0.0.1:5000/openqq/send_group_message

{
   "gnumber":1234,
   "content":text
}

收到成功响应:

200
{ code: 0, msg_id: 73300027, status: '发送成功' }

但是消息实际并没有发出去.

而发送好友消息, 用http://127.0.0.1:5000/openqq/send_message POST + JSON可以发送到.

请问是哪里不对?

登录脚本报错了

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Can't locate Mojo/Webqq.pm in @inc (@inc contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./run.pl line 2.
BEGIN failed--compilation aborted at ./run.pl line 2.

运行过程中很多报错,而且发送QQ群消息接收不到!

[16/10/28 08:36:29] [warn] 更新好友信息失败
[16/10/28 08:41:00] [warn] http://d1.web2.qq.com/channel/poll2 请求失败: 502 Bad Gateway
[16/10/28 08:41:01] [warn] http://d1.web2.qq.com/channel/poll2 请求失败: 502 Bad Gateway
[16/10/28 08:43:15] [好友消息] 我->test : 没有了消息[无法判断是否发送成功]
[16/10/28 08:44:06] [warn] http://d1.web2.qq.com/channel/poll2 请求失败: 502 Bad Gateway
[16/10/28 08:44:29] [warn] 更新群列表信息失败
[16/10/28 08:45:29] [info] 更新讨论组列表信息...
[16/10/28 08:45:29] [warn] 更新讨论列表信息失败
[16/10/28 08:46:09] [warn] http://d1.web2.qq.com/channel/poll2 请求失败: 502 Bad Gateway
[16/10/28 08:46:10] [warn] http://d1.web2.qq.com/channel/poll2 请求失败: 502 Bad Gateway
[16/10/28 08:46:29] [warn] 更新好友信息失败
[16/10/28 08:48:13] [warn] http://d1.web2.qq.com/channel/poll2 请求失败: 502 Bad Gateway
[16/10/28 08:48:14] [warn] http://d1.web2.qq.com/channel/poll2 请求失败: 502 Bad Gateway
[16/10/28 08:49:26] [info] 更新讨论组列表信息...
[16/10/28 08:49:26] [warn] 更新讨论列表信息失败
[16/10/28 08:52:19] [warn] http://d1.web2.qq.com/channel/poll2 请求失败: 502 Bad Gateway

使用OpenQQ模块发送群消息的问题

今天从pfqq切换到这个工程,发现使用如下格式发送群消息会报错:group not found

/openqq/send_group_message?gnumber=xxx&content=xxx

只有,使用gid参数才能发送成功:

/openqq/send_group_message?gid=xxx&content=xxx

但是问题是gid字段并不直观,是新版OpenQQ模块有bug吗?还是search_group这个接口有bug?

Ooenqq端口始终为3000

无论port设置多少,只监听3000端口,Openwx也是这样,是我哪里不对吗?求帮助

IRCShell 二维码下载过程从服务器启动时移动至客户端连接后

为了方便,我使用~/.config/systemd/user/mojo-webqq.service在桌面会话里自动启动

[Unit]
Description=Mojo-WebQQ
Documentation=https://github.com/sjdy521/Mojo-Webqq

[Service]
Environment=PERL5LIB=/home/ray/Dev/Chat/Mojo-Webqq/lib:/home/ray/perl5/lib/perl5
ExecStart=/usr/bin/perl -MMojo::Webqq -e 'Mojo::Webqq->new(qq=>xxxxxxxxx)->login->load("ShowMsg")->load("IRCShell",data=>{listen=>[{host=>"127.0.0.1",port=>6668}], load_friend=>1})->run()'

[Install]
WantedBy=graphical.target

或者采用其他常驻的方式,服务器登录时扫码不如在客户端连接后在“#我的好友”频道发送二维码链接方便

一点疑问

你好
我在看你的这个基于webqq的qq机器人时看到有个智能回复的模块,里面有个可以@群人员的语句,但是我不懂Perl,能不能给我讲讲呢?麻烦了

$input=~s/@\Q$user_nick\E ?|[[^[]]+]\x01|[[^[]]+]//g;

KnowledgeBase插件改进意见

1.希望能自定义指令,比如:我不用learn而是使用study,进行学习。类似的还有delete。
2.希望能自定义拉入黑名单@的次数,已经拉黑的时间,现在都是写死的。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.