使用Perl语言编写的微信客户端框架,基于Mojolicious,要求Perl版本5.10+,可通过插件提供基于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语言交流 : 多谢多谢
+-------------------+ +----------------+
| Tencent | | Any IRC Client |
| Weixin Server | | wechat、irssi |
+---v-------------^-+ +-v------------^-+
| | | |
| 微信协议交互| |IRC协议交互 |
+-- --- |-- - - -- | - - - -- - - --- | --- ----- | --+
| +---v-------------^--+ +----v------------^-+ |
| | <——————————————————< | |
| | Weixin Client | Weixin - IRC | IRC Server | |
| | | 协议转换 | 监听本机6667端口 | |
| | >——————————————————> | |
| +--------------------+ +-------------------+ |
| |
| 我们程序实现的部分 |
+--- - - - - -- - -- ---- ------ ------- ------ --- ----+
推荐使用cpanm在线安装Mojo::Weixin模块, 如果使用docker方式请参见Docker镜像安装及使用方法
安装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位系统
安装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
使用cpanm在线安装 Mojo::Weixin 模块(如果系统已经安装了该模块,执行此步骤会对模块进行升级)
$ cpanm Mojo::Weixin
如果安装过程中一直提示下载失败,很可能是因为访问到国外服务器网络比较差
这种情况下可以尝试按如下方式手动指定国内的镜像站点
$ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Weixin
安装失败可能有帮助的解决方法
如果你运气不佳,通过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 -
我对Perl很熟悉,是一个专业的Perler
该项目是一个纯粹的Perl模块,已经发布到了cpan上,请仔细阅读 Mojo::Weixin
模块的使用文档
除此之外,你可以看下 demo 目录下的更多代码示例
我是对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文档
我是一个极客,我只想能够在命令行上通过 IRC 的方式来玩转微信聊天
JavaScript
Python
Java
可以通过扫描支付宝付款二维码进行赞助,感谢您的支持和鼓励
特别致谢 那些曾经赞助的小伙伴们
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
报错: Cannot resolve plugin org.apache.maven.plugins:maven-clean-plugin:2.5 Failed org.codehaus.mojo:exec-maven-plugin3.0.0:exec (default-cli) on project Failed to execute goal org.apache.maven.plugins:
alluxio 编译源码遇到如下错误 [ERROR] Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.4:create-metadata (default) on project alluxio-core-common: Execution default of goal org.codehaus.mojo:b
从 SNV 导入新工程后,启动工程,但 Maven 报错: Error resolving version for plugin 'org.codehaus.mojo:tomcat-maven-plugin' ....... 解决办法: 删除本地仓库中 C:\Users\a\.m2\repository\org\codehaus\mojo 的包,再从 SNV 导入新工程后,启动工程,解决。
idea2020版本使用下载的maven插件用着一直报错,修改setting.xml文件无效,idea卸载maven插件便好了,猜测可能是下载的插件里面的配置有问题,具体问题也不知道
maven编译项目时报错:Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.1:rpm (default) on project 原因: 没有安装rpm. 安装rpm build工具包: yum install rpm 或者 sudo apt-get install rpm 具体错误是: Failed to execu
maven 报错:Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.3.1:compile (execution: default, phase: compile) 错误示例 一个错误示例,子项目引用了父项目,子项目parent标签处报错如下: Mult
在maven项目中使用add-source时,pom.xml报如下错误: Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.8:add-source (execution: add-source, phase: generate-sources
[root@wx03 ~]# cat test.pl use Mojolicious::Lite; use JSON qw/encode_json decode_json/; use Encode; no strict; use JSON; use Data::Dumper; no utf8; # /foo?user=sri get '/admin/api/menu' => sub {
问题: 在项目没有任何问题的情况下报错了 Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (default-cli) on project 解决: 在查阅了资料以后发现是IDEA2020的兼容问题 解决办法: 测试不要用main方法测试,使用junit测试 更换版本至IDEA2017 参考博客:https:
错误信息: [ERROR] Failed to execute goal org.codehaus.mojo:native2ascii-maven-plugin:1.0-alpha-1:native2ascii (native2ascii-utf8) on project tsbMngr: Execution native2ascii-utf8 of goal org.codehaus.mojo
在编译maven项目,打包maven packeage -Dmaven.test.skip=TRUE时,报错“[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.5.0-rc1:compile (default) on project zeus-web: Command ”。 我个人解决办法是从报错的
错误信息: [ERROR] Failed to execute goal org.codehaus.mojo:native2ascii-maven-plugin:1.0-alpha-1:native2ascii (native2ascii-utf8) on project tsbMngr: Execution native2ascii-utf8 of goal org.codehaus.mojo
在maven项目中使用add-source时,pom.xml报如下错误: Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.8:add-test-source (execution: add-functional-source, phase
[root@dr-mysql01 ~]# cat f1.pl use Encode; print "验证111\n"; my $d=encode_utf8('验证'); print $d; print "\n"; [root@dr-mysql01 ~]# perl f1.pl 验证111 éªè¯ [root@dr-mysql01 ~]# mojo 默认开始utf-8 my $d
get '/api/log_mon/get_log' => sub{ my $c = shift; my $env = $c->param('env'); my $host = $c->param('host'); use DBI; my $dbUser='DEVOPS'; my $user="root"; my $passwd="1234567"; my @a
Mojolicious is a fresh take on Perl web development, based on years of experience developing the Catalyst framework,and utilizing the latest web standards and technologies. You can get started with yo
!!!重要通知:WebQQ将在2019年1月1日停止服务,项目目前已停止维护,感谢大家四年来一路陪伴 使用Perl语言编写的Smartqq客户端框架,基于Mojolicious,要求Perl版本5.10+,可通过插件提供基于HTTP协议的api接口供其他语言或系统调用。 郑重声明 本项目完全遵循QQ官方提供的原始功能,不包含任何破坏、盗号等行为,本项目完全开源,目的是为了促进技术交流学习,禁止任何
我有一个带有两个maven插件模块的mutli项目:base和child()。孩子依赖基础。 带POM: 基本编译正确,子级通过编译但失败: 未能在项目plugin-child上执行goal org.apache.maven.plugins:maven-plugin-plugin:3.4:descriptor(default-descriptor):mojo扫描器的API与此插件版本不兼容。请检查
我的问题是:根据这些参数,我可以在哪里归档标准maven插件的API fefinition?
我试图配置我的Eclipse(开普勒),当我执行运行为- 有解决办法吗?谢谢关注。 [编辑]这是我的pom。xml,我需要用GWT和GWTBootstrap配置maveneclipse。再次感谢您的关注和帮助。
问题内容: 我正在开发一个Maven插件。我似乎很难弄清楚,从执行MOJO的项目中获取POM信息的好方法是什么? 例如,如果我在另一个Maven项目中执行我的mojo,我想获取项目名称或其他一些参数。 还有一件事,在AbstractMojo.java类中有一个上下文MAP,有私有Map pluginContext,如果我错了,有人可以纠正我,但这应该用于在mojos之间传递信息吗? 问题答案: 您