Giter Club home page Giter Club logo

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  avatar

mojo-weixin's Issues

加入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();

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

功能请求:支持好友管理

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

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

只支持perl进行插件开发?

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

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

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

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

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

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

请求失败: 503 Service Unavailable

关于机器人问题

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

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在这种情况下的启动脚本是根本没有实现功能的。

怎么办?

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

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 方式安装

Base.pm

attr子程序的

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

这句永远都不会被执行吧

在irssi中发送图片文件

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

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

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

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

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

post api插件bug

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

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

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

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.

功能请求: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"
}

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

微信初始化返回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;

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 我的好友 会发生什么?

查询好友中谁删除了自己

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

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

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

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

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

可否实现日程管理

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

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

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

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

提醒方式
**时间:**单次提醒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] 客户端停止运行

指定好友帐号发送消息,提示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 ~]#

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

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

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

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。

下载下来的图片应为jpg

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

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

语音

语音消息接受不到吗?

微信群组加载不全的问题

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

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

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

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

ps:测试使用的是qq邮箱


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

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

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.