Giter Site home page Giter Site logo

hexsum / mojo-weixin Goto Github PK

View Code? Open in Web Editor NEW
1.2K 92.0 251.0 2.01 MB

使用Perl语言(不会没关系)编写的个人账号微信/weixin/wechat客户端框架(非GUI),可通过插件提供基于HTTP协议的api接口供其他语言或系统调用

License: Other

Perl 98.61% Perl 6 1.10% Dockerfile 0.29%
perl mojo irc weixin wechat chat chatbot api docker weixinbot

mojo-weixin's Introduction

Mojo-Weixin v1.4.6 Build Status API列表 QQ群-498880156 IRC LICENSE

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

郑重声明

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

特色功能

  • 支持 发送/接收文字、图片、视频、语音、表情、文件等多种媒体消息(网页版自身功能范围)
  • 支持 新增/失去好友、新增/退出群组、新增/失去群成员 等事件提醒
  • 支持 创建群组、群组加人/踢人、发送/接受好友验证申请、设置群组名称、设置好友备注
  • 支持 Windows/Linux/Mac 多平台,支持docker镜像,易安装部署,不懂Perl也能用
  • 提供 基于HTTP协议的API接口 ,简洁丰富,方便和其他编程语言集成
  • 一个产品经理的倾情之作,代码由内而外都更加注重“用户体验”,外加主人人品极好,你会懂的

插件列表

名称 优先级 当前状态 github作者 功能说明
ShowMsg 100 已发布 sjdy521 打印客户端接收和发送的消息
IRCShell 99 已发布 sjdy521 Linux环境下通过irc客户端使用微信
Openwx 98 已发布 sjdy521 提供微信发送消息api接口
Beauty 95 已发布 sjdy521 识别指定关键字发送美女图片
Translation 93 已发布 sjdy521 多国语言翻译功能
KnowledgeBase 2 已发布 sjdy521 通过微信消息自定义问答知识库
AutoVerify 1 已发布 sjdy521 收到好友验证请求时自动批准同意
PostQRcode 0 已发布 sjdy521 登录二维码发送到邮箱实现远程扫码
UploadQRcode 0 已发布 sjdy521 二维码上传图床获得公网访问url
XiaoiceReply 1 已发布 sjdy521 利用微软小冰实现智能聊天回复
ShowQRcode 0 已发布 sjdy521 调用系统图片查看程序来示二维码(目前仅支持win)
SmartReply 0 已发布 sjdy521 智能聊天回复

更多插件参考完整插件列表

效果展示

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

cpanm Mojo::Weixin && perl -MMojo::Weixin -e "Mojo::Weixin->new->load('ShowMsg')->load('SmartReply')->run()"
[16/01/19 23:10:49] [info] 客户端准备登录...
[16/01/19 23:10:50] [info] 清除残留的历史二维码图片
[16/01/19 23:10:30] [info] 二维码已下载到本地[ /tmp/mojo_weixin_qrcode.jpg ]
[16/01/19 23:11:20] [info] 等待手机微信扫描二维码...
[16/01/19 23:12:09] [info] 手机微信扫码成功,请在手机微信上点击 [登录] 按钮...
[16/01/19 23:12:10] [info] 正在进行登录...
[16/01/19 23:12:10] [info] 微信登录成功
[16/01/19 23:13:40] [info] 获取联系人信息...
[16/01/19 23:13:40] [info] 更新个人信息成功
[16/01/19 23:14:41] [info] 更新好友信息成功
[16/01/19 23:15:42] [info] 更新群组[ 红包群 ]信息成功
[16/01/19 23:15:42] [info] 更新群组[ Perl语言交流 ]信息成功
[16/01/19 23:15:42] [info] 开始接收消息...
[16/01/19 23:15:00] [群消息] 小灰|Perl语言交流 : Mojo::Weixin不错哦
[16/01/19 23:15:58] [群消息] 我->Perl语言交流 : 多谢多谢

通过irc客户端在linux终端上使用微信

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

IRCShell

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

安装方法

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

  1. 安装perl

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

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

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

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

    Linux上如果你的perl版本较低,想要升级perl,可以考虑使用工具perlbrew

    平台 推荐选择 下载地址
    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(只适用于root用户)

     $ cpan -i App::cpanminus
    

    方法b: 直接在线安装cpanm

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

     $ cpanm Mojo::Weixin
    

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

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

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

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

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

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

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

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

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

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

    RedHat/Centos:

     $ yum install -y openssl-devel
    

    Ubuntu:

     $ sudo apt-get install libssl-dev
    

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

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

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

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

如何使用

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

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

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

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

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

     #!/usr/bin/env perl
     use Mojo::Weixin;
     my ($host,$port,$post_api);
     
     $host = "0.0.0.0"; #发送消息接口监听地址,没有特殊需要请不要修改
     $port = 3000;      #发送消息接口监听端口,修改为自己希望监听的端口
     #$post_api = 'http://xxxx';  #接收到的消息上报接口,如果不需要接收消息上报,可以删除或注释此行
     
     my $client = Mojo::Weixin->new(log_level=>"info",http_debug=>0);
     $client->load("ShowMsg");
     $client->load("Openwx",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api});
     $client->run();
    

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

     $ perl xxxx.pl
    

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

     http://127.0.0.1:3000/openwx/send_friend_message?id=xxxx&content=hello
     
     * About to connect() to 127.0.0.1 port 3000 (#0)
     *   Trying 127.0.0.1...
     * Connected to 127.0.0.1 (127.0.0.1) port 3000 (#0)
     > GET /openwx/send_friend_message?id=xxxxx&content=hello HTTP/1.1
     > User-Agent: curl/7.29.0
     > Host: 127.0.0.1:3000
     > 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":"发送成功","id":23910327,"code":0}
    

    更多接口参数说明参考Openwx插件API文档

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

    请阅读IRCShell插件使用步骤

核心依赖模块

相关文档

官方交流

友情链接

JavaScript

  • wechaty Wechaty is wechat for bot in Javascript(ES6). It's a Personal Account Robot Framework/Library.
  • wechatircd 用IRC客户端控制微信网页版
  • Weixinbot Nodejs 封装网页版微信的接口,可编程控制微信消息

Python

  • WeixinBot 网页版微信API,包含终端版微信及微信机器人
  • ItChat 微信个人号接口、微信机器人及命令行微信。三十行即可自定义个人号机器人

Java

  • wechat-client Mojo-Weixin HTTP 接口 的 Java 客户端,非常感谢 @dadiyang 贡献

赞助奖励

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

donate

特别致谢 那些曾经赞助的小伙伴们

COPYRIGHT 和 LICENCE

Copyright (C) 2014 by sjdy521

This library is free software; you can redistribute it and/or modify it under MIT License and Anti 996 License

mojo-weixin's People

Contributors

autodataming avatar bollwarm avatar dotedu avatar gitter-badger avatar heipidage avatar hexsum avatar hubertzhang avatar hyvinlam avatar ibreaker 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

mojo-weixin's Issues

请求失败: 503 Service Unavailable

邮件发送正文乱码且导致附件图片损坏

PostQRcode的正文显示的是乱码,并且附件的图片会损坏(测试下来是正文乱码导致的)

正文:
请使用手机微信扫描附件中的二维码

ps:测试使用的是qq邮箱


另外,如果没有设置参数subject的话,下面这行会报错,$client->user在这个阶段并没有初始化。

$data->{subject} = "微信帐号 " . $client->user->displayname . " 扫描二维码" if not defined $data->{subject};

微信群组加载不全的问题

每次登陆都会提示更新群组,但是群组一般都更新不全,未更新的群,如果收到消息,能更新进来,但是这样一来就不能主动给很多群发消息了,而且下次微信重启的时候,上次未加载的群,依然没有被加载!

关于机器人问题

今天准备开始写机器人 然后发现一个问题. 我注册了一个小号. 用来作为机器人. 然后手机扫描二维码登录之后, 我手机切换至主号上. 准备跟小号对话 来调试 发现 手机上小号刚退出 Mojo-weixin 就退出了. 接着我尝试 用主号 启动两个web 微信 (一个Mojo-weixin, 一个web 微信) 发现 只要第二个扫描认证后 登录 第一个已经登录的web 微信 就会自动退出. 而通过注册小号方式来做机器人 就要求 手机上的小号微信不能退出. 有点失落.. 这样没法玩了 555

IRCShell收不到消息

用了IRCShell, 客户端使用的是irssi, 连接上我的vps, irssi提示连接成功, 然后/join 我的好友, 也成功了. 然后/query 私聊一个好友, 手机上没有同步消息. 然后对方也没有收到消息. 对方发送的消息. irssi上也无法收到. 通过vps上的终端查看. 是有内容来往的. 我的启动脚本如下:
#!/usr/bin/env perl
use Mojo::Weixin;
my $client = Mojo::Weixin->new();
$client->load("ShowMsg");
#$client->load("ShowQRCodeInTerm");
$client->load("UploadQRcode");
$client->load("IRCShell"); #加载IRCShell插件
$client->run();

另外对于如果我跑vps上 想24小时不离线, 安全性如何保证? 我看咱们这个IRC Server是开放式的. 没有什么授权机制, 或者密码之类的东西. 任何人只要知道我的IRC端口 都可以进入我的IRC Server ,如果此时他/join 我的好友 会发生什么?

上报消息不能上报在移动端发送出去的消息

上报消息时,只上报接收到的消息,假如通过手机APP发送的消息,则忽略掉不上报。由于我需要收集所有的对话记录,方便日后查询历史记录,如不记录我手机APP发送出来的消息,那整个对话流程不完整。

加入IRC模块后一直刷新用户名单结束却自动退出登陆

运行脚本之后,提示登陆成功,然后一直提示”info] C[微信用户:虚拟用户]已加入”,几分钟都不停,等把所有微信群加入频道之后就自动退出登陆了。
最新版的Mojo-weixin,使用以下两个脚本结果都是:

#!/usr/bin/env perl
use Mojo::Weixin;
my $client = Mojo::Weixin->new();
$client->load("ShowMsg");
$client->load("IRCShell",data=>{ listen=>[ {host=>"127.0.0.1",port=>6667},], 
load_friend => 1,
});
$client->load("ShowMsg");
#$client->load("Beauty"); 
$client->load("Beauty",data=>{
    file => './Beauty.dat', #可选,数据库保存路径,默认当前目录
     board=>[ 
              {command=>"看妹子", url=>'http://huaban.com/boards/19570858/'},
              {command=>"搞基"  , url=>'http://huaban.com/boards/28226262/'},
              {command=>"看帅哥", url=>'http://huaban.com/boards/27865046/'},
               ]
                                    });
#$client->load("Translation");
##$client->load("Weather");   #提示出错
#$client->load("XiaoiceReply");
#$client->load("XiaoiceReply",data=>{
#    is_need_at  => 1,           #可选,是否需要艾特我来触发智能回复
#    comamnd_on  => "小冰启动",  #可选,启动智能回复的命令,在手机端发送给任何人/群该消息内容即可
#    comamnd_off => "小冰停止",  #可选,停止智能回复的命令,在手机端发送给任何人/群该消息内容即可
#            });
$client->load("SmartReply");
#$client->load("KnowledgeBase");
$client->load("KnowledgeBase2",data=>{
    #allow_group => ["PERL学习交流"],  #可选,允许插件的群,可以是群名称或群号码
    #   ban_group   => ["私人群1","私人群2"], #可选,禁用该插件的群,可以是群名称或群号码
         file => './KnowledgeBase2.txt', #数据库保存路径,纯文本形式,可以编辑
         learn_command  => 'learn',     #可选,自定义学习指令关键字
         delete_command =>'del',      #可选,自定义删除指令关键字
         learn_operator => ["QQ1","QQ2"], #允许学习权限的操作人qq号
         delete_operator => ["QQ1"], #允许删除权限的操作人qq号
         mode => 'fuzzy', # fuzzy|regex|exact 分别表示模糊|正则|精确, 默认模糊
         check_time => 10, #默认10秒检查一次文件变更
         show_keyword => 1, #消息是否包含触发关键字信息,默认开启
                                        });
#$client->load("Riddle");
#$client->load("Riddle",data=>{
#     command     => "猜谜",   #可选,触发关键字
#     #apikey      => "xxxx",   #可选,参见 http://apistore.baidu.com/apiworks/servicedetail/440.html?qq-pf-to=pcqq.c2c
#     timeout     => 30, #等待答案的超时时间,超时后会自动公布答案
#             }); 
#$client->load("IRCShell");
$client->run();

第二个

#!/usr/bin/env perl
use Mojo::Weixin;
my $client = Mojo::Weixin->new();
$client->load("ShowMsg");
$client->load("IRCShell"); #加载IRCShell插件
$client->run();

另外有很多插件不能同时启动是什么原因呢?

Mojo::Weixin 可否加入好友table自动补全功能

情况
好友名字中含有特殊字符,如表情之类,这样在程序识别的时候,就会出现如下例子:
陈[未知表情][未知表情]闯

如果/query nickname 这个格式的话,输入名字比较麻烦。

 提个方法 :把好友的名字用编号代替,如1、2、3……55、73等 ,这样就可以用下面的格式开启新的单独窗口了/query 3

just installed it and having an issue with the testing script

after login, it retrieves a few groups from my wechat account. but then logout and login again and again.

[16/06/24 18:48:25] [info] 更新群组[ 79006 ]信息成功 <= should stay in but it tries to relogin here again and again.
[16/06/24 18:48:32] [info] 正在重新登录...
[16/06/24 18:48:32] [info] 客户端注销...
[16/06/24 18:48:32] [info] 客户端准备登录...
[16/06/24 18:48:39] [info] 清除残留的历史二维码图片
[16/06/24 18:48:39] [info] 二维码已下载到本地[ /tmp/mojo_weixin_qrcode_default.jpg ]
[16/06/24 18:48:39] [info] 二维码原始下载地址[ https://login.weixin.qq.com/qrcode/IZU0EHSxqg== ]
[16/06/24 18:48:39] [info] 等待手机微信扫描二维码...

What could be the problem?

Another thing is: If i login in once, can it login automatically without asking to scan the QR code again?

Thank you,

--David

PS: the lib is pretty impressive. great job.

Base.pm

attr子程序的

return exists $_[0]{$attr} ? $_[0]{$attr} : ($_[0]{$attr} = $value)
          if @_ == 1;

这句永远都不会被执行吧

查询好友中谁删除了自己

刚刚忘记写了,再建议实现一个功能。
微信里有很多悄悄把自己删除了的联系人,一个一个的去删除很费时间和力气。网传群发消息可以找出谁删除了你是不可行的。所以可不可以实现发条指令查询出谁删除了自己?然后再发一条指令删除这些已经删除了你的好友。
原是在一个python项目看到,利用微信网页版的接口, 将好友35人拉入一个群聊, 再移出, 反复进行多组, 无法成功拉入则说明他把你拉黑了,删除本来主有好友本来就有这个功能……

可否实现日程管理

不知道可不中以实现一个可以交互的日程管理插件:

时间
获取现在时间(年月日周时分秒)

日程/约会/生日/纪念日
什么时间 要做什么事
会议
会议时间 参会人员 会议主题

备忘
如果需要很长一段时间后处理,则做一个备忘。参照以上。
可以按标签列出(办公,家里,外出……)

提醒方式
**时间:**单次提醒tmier/循环提醒interval
提醒途径:
微信个人消息
微信群消息(发到某一个群,适合有其他人参与的场景)
QQ个人消息
QQ群(发到某一个群,适合有其他人参与的场景)
邮件(适合有其他人参与的场景,发送消息到相应人员的电子邮箱)

应用实例
1、比如12月1日上午10:00要开销售会议,

报时 #可选。确定现在的日期时间
指令 执行时间 主题 内容 提醒方式:时间&消息接受者(不定义则发给自己,定义则用指定方式发给相关人员)
todo 2016年12月1日10:00 销售会议 参会人员A,B,C和D 。讨论客户开发及销售业绩总结。 提醒方式:时间&群/个人/邮件

清单/list 列出清单。
编辑(增加,修改,删除……)功能等

登录返回数据格式异常

[16/05/25 20:22:49] [info] 当前正在使用 Mojo-Weixin v1.1.3
[16/05/25 20:22:49] [info] 客户端准备登录...
[16/05/25 20:23:00] [info] 清除残留的历史二维码图片
[16/05/25 20:23:00] [info] 二维码已下载到本地[ /var/folders/... ]
[16/05/25 20:23:00] [info] 等待手机微信扫描二维码...
[16/05/25 20:23:23] [info] 手机微信扫码成功,请在手机微信上点击 [登录] 按钮...
[16/05/25 20:23:24] [info] 正在进行登录...
[16/05/25 20:23:29] [error] 登录返回数据格式异常
[16/05/25 20:23:29] [error] 登录失败
[16/05/25 20:23:29] [info] 客户端停止运行

Mojo::Webqq和Mojo::Weixin两个不能同时打开

一、Mojo::Webqq启动脚本:

!/usr/bin/env perl

use Mojo::Webqq;
my $qq = 123456789; #修改为你自己的实际QQ号码
my $client = Mojo::Webqq->new(qq=>$qq);
$client->load("ShowMsg");
$client->load("IRCShell"); #加载IRCShell插件
$client->run();

二、Mojo::Weixin启动脚本:

!/usr/bin/env perl

use Mojo::Weixin;
my $client = Mojo::Weixin->new();
$client->load("ShowMsg");
$client->load("IRCShell",data=>{host=>"127.0.0.1",port=>8888,}); #加载IRCShell插件
$client->run();

正常来说,一个是监听6667端口,一个是8888端口,没有“占用”问题。
如果把webqq先启动了,这时6667就被使用了,可以被IRC客户端去连接的,没有问题。可这时,若把weixin也启动了,则正常登陆没有问题,若用IRC客户端去连接8888端口则无法实现,因为8888端口根本没有被监听……经测试,其实还是用着6667端口,只是因为被占用,而无法被IRC客户端连接……这就说明weixin在这种情况下的启动脚本是根本没有实现功能的。

怎么办?

只支持perl进行插件开发?

貌似只支持perl进行插件开发? openwx 只有发送API, 并无接收API, 如果要做一个机器人 除了用perl来开发, 还支持其他语言嘛?

找到了openwx 有自定义消息上报接口. 可以close掉了

BUG反馈:new_group_member事件上报信息不全

目前的该事件上报存在BUG,成员的信息展现不全。

{
    "params": [
        {
            "city": "",
            "displayname": "xxxx",
            "display": "",
            "markname": "",
            "province": "",
            "sex": "",
            "id": "@5981c40166a4768a0d37d3bdf3dd9d12d9c8004e6db97eb8ae2ddf75b9e3e8be",
            "account": "",
            "name": "xxx",
            "signature": ""
        }
    ],
    "event": "new_group_member",
    "post_type": "event"
}

比如上面的例子中,只给出了displayname,id和name信息,别的信息都是Null。

post api插件bug

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

功能请求:支持好友管理

Openwx 支持如下好友管理功能:

  • 添加好友 (不需要主动添加,只需要在别人加你的时候点击添加即可,网页版应该有这个功能)
  • 删除好友
  • 为好友添加标签

Mojo::Weixin 是否加入语音、视频、文件传输等功能

1、语音、小视频、GIF动画、动画表情、网页链接等,期待加入。
2、更为重要的一个——文件传输,呵呵。

网页版中有的功能若都实现的话,肯定要花费很多精力和时间,但如果真的要做的话,还是更一个图形界面的觉得更合适吧。

openqq-client.pl 打印好友列表和收到的响应有乱码

使用demo中的openqq-client.pl 打印好友列表、收到的响应有乱码,发送给对方是中文时,对方微信收到的也是乱码

好友:
璇煶鎻愰啋 gh_22b87fa7cb3c
寰俊鏀粯 @82c3efa759834c229f923d6cca657360

{"code":0,"status":"鍙戦€佹垚鍔?,"msg_id":1454936158172} at wc2.pl line 68

语音

语音消息接受不到吗?

下载下来的图片应为jpg

我今天安装好之后进行试用,下载下来的二维码图片无法打开,提示不是有效的png图片,修改后缀名为jpg之后打开正常~

PS: 感谢你的库,非常好用!

微信初始化返回1

请问下如下代码,不需要cookie吗?我是搞php,看的不是太懂;我用php写的,卡在这个地方了,Ret一直返回1

sub Mojo::Weixin::_webwxinit{
    my $self = shift;
    my $api = "https://". $self->domain . "/cgi-bin/mmwebwx-bin/webwxinit";
    my @query_string = (
        r           =>  sub{use integer;unpack 'i',~ pack 'l',$self->now() & 0xFFFFFFFF}->(),
    );
    push @query_string,(pass_ticket =>  $self->url_escape($self->pass_ticket)) if $self->pass_ticket;
    my $post = {
        BaseRequest =>  {
            Uin         =>  $self->wxuin,
            Sid         =>  $self->wxsid,
            Skey        =>  $self->skey,
            DeviceID    =>  $self->deviceid,
        },
    };
    
    my $json = $self->http_post($self->gen_url($api,@query_string),{json=>1,Referer=>'https://'.$self->domain .'/'},json=>$post);
    return if not defined $json;
    return if $json->{BaseResponse}{Ret}!=0;

运行示例代码,一直循环登入->获取消息->登出

RT.
运行
`#!/usr/bin/env perl
use Mojo::Weixin;
my ($host,$port,$post_api);

$host = "127.0.0.1"; #发送消息接口监听地址,修改为自己希望监听的地址
$port = 3000; #发送消息接口监听端口,修改为自己希望监听的端口

$post_api = 'http://xxxx'; #接收到的消息上报接口,如果不需要接收消息上报,可以删除或注释此行

my $client = Mojo::Weixin->new(log_level=>"info",http_debug=>0);
$client->load("ShowMsg");
$client->load("Openwx",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api});
$client->run();
`
就一直是登入 登出
我是采用Mojo-ActivePerl-master 方式安装

功能请求:new_group_member事件上报中添加group信息

目前的new_group_member事件信息如下:

{
    "params": [
        {
            "city": "",
            "displayname": "xxx",
            "display": "",
            "markname": "",
            "province": "",
            "sex": "",
            "id": "@5981c40166a4768a0d37d3bdxxxdd9d12d9c8004e6db97eb8ae2ddf75b9e3e8be",
            "account": "",
            "name": "xxx",
            "signature": ""
        }
    ],
    "event": "new_group_member",
    "post_type": "event"
}

建议增加此用户加入的群组相关信息。

在irssi中发送图片文件

我看到Mojo-Weixin的介绍说可以实现图片的接收发送, 所以我想在irssi里面直接发送图片,请问这可以做到吗?能否给个示例,或者需要修改IRCShell的实现,以支持这种操作.

指定好友帐号发送消息,提示object not found

[root@mojowebqq ~]# curl -v "http://127.0.0.1:3000/openwx/send_friend_message?account=zjcnew&content=hi"

  • About to connect() to 127.0.0.1 port 3000 (#0)
  • Trying 127.0.0.1... connected
  • Connected to 127.0.0.1 (127.0.0.1) port 3000 (#0)

GET /openwx/send_friend_message?account=zjcnew&content=hi HTTP/1.1
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: 127.0.0.1:3000
Accept: /

< HTTP/1.1 200 OK
< Content-Type: application/json;charset=UTF-8
< Date: Wed, 23 Nov 2016 07:50:08 GMT
< Content-Length: 54
< Server: Mojolicious (Perl)
<

  • Connection #0 to host 127.0.0.1 left intact
  • Closing connection #0
    {"code":100,"msg_id":null,"status":"object not found"}[root@mojowebqq ~]#

小冰不能在群里回复, 只能单独一对一对话.

正常工作在 1.2.1 版本的调用代码:

$client->load("XiaoiceReply"); $client->load("XiaoiceReply",data=>{ is_need_at => 0, comamnd_on => "启动小冰", comamnd_off => "停止小冰", });

更新到 1.2.5 之后, 在任一个对话窗口发送启动指令"启动小冰", 会提示"小冰已启动", 但对方发送的对话没有转发到小冰公众号, 所以也无法调用小冰自动回复. 如果自己单独发对话给小冰是正常的.

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.