Mojo-Webqq

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

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

![如何像黑客一样聊天](screenshot/How_to_chat_like_a_hacker.jpg)

#### 更多应用效果 请参见[Mojo-Webqq作品展](Collection.md)

### 安装方法

推荐使用[cpanm](https://metacpan.org/pod/distribution/App-cpanminus/bin/cpanm)在线安装或升级[Mojo::Webqq](https://metacpan.org/pod/distribution/Mojo-Webqq/doc/Webqq.pod)模块, 如果使用docker方式请参见[Docker镜像安装及使用æ...

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

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

    [Perl官网下载页面](https://www.perl.org/get.html) 有包含Unix/Linux、Mac OS X、Windows多平台比较全面详细的安装说明

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

    |平台    |推荐选择              |下载地址                    |
    |:-------|:--------------------|:--------------------------|
    |Windows |1. **StrawberryPerl**<br>2. ActivePerl<br>3. **Mojo-StrawberryPerl**|[StrawberryPerl下载地址](http://strawberryperl.com/)<br>[Mojo-StrawberryPerl下载地址](https://github.com/sjdy521/Mojo-StrawberryPerl)<br>[ActivePerl下载地å...
    |Linux   |1. **系统自带**<br>2. **yum/apt等包管理器**<br>3. 官方源码编译<br>4. ActivePerl<br>5. DWIM-Perl|[ActivePerl下载地址](http://www.activestate.com/activeperl/downloads)<br>[DWIM-Perl下载地址](http://dwimperl.com/lin...
    |Mac     |1. **系统自带**<br>2. ActivePerl|[ActivePerl下载地址](http://www.activestate.com/activeperl/downloads)|
  
    注意:
      
    [Mojo-StrawberryPerl](https://github.com/sjdy521/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](https://github.com/sjdy521/Mojo-Webqq/blob/master/FAQ.md#11-%E9%9D%9Eroot%E8%B4%A6%E5%8F%B7%E5%AE%89%E8%A3%85%E5%90%8E%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E9%97%AE%E9%A2%98)
    
    如果仍然有问题,Linux上可以尝试执行如下脚本进行依赖模块检查
    
        $ curl -ks "https://raw.githubusercontent.com/sjdy521/Mojo-Webqq/master/script/check_dependencies.pl"|perl -

### 如何使用

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

    该项目是一个纯粹的Perl模块,已经发布到了cpan上,请仔细阅读 `Mojo::Weqq` 模块的[使用文档](https://metacpan.org/pod/distribution/Mojo-Webqq/doc/Webqq.pod)

    除此之外,你可以看下 [demo](https://github.com/sjdy521/Mojo-Webqq/tree/master/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



( run in 1.548 second using v1.01-cache-2.11-cpan-39bf76dae61 )