問下,Webqq::Client能不能接收圖片或文件?


On 2014年12月09日 23:39, chenlin rao wrote:
鹅厂应该是关闭webqq保留smartqq吧?完全放弃网页版不现实啊,连微信都有网 页版。

在 2014年12月9日 下午10:31,arrow.w...@gmail.com <mailto:arrow.w...@gmail.com> <arrow.w...@gmail.com <mailto:arrow.w...@gmail.com>>写 道:

    讚!但是聽說 webqq近期要關閉,不知道還能用多長時間。

    ==============================================
    9月30日消息,近日登录腾讯WebQQ的用户会看到“WebQQ告别会 相聚有时 后
    会无期”的公告页面。预示着 WebQQ即将停止服务,但公 告页面并没有给出
    停止服务的具体时间,目前WebQQ及SmartQQ也仍然能正常使用。

    据了解,WebQQ于2009年9月15日正式上线,是腾讯公司推出的使用网页方式
    上QQ的服务,特点是无需下载和安 装QQ软件,只要能打 开 WebQQ的网站就
    可以登录QQ与好友保持联系。具有Web产品固有的便利性,同时在Web上最大
    限度的保持了客户端软件的操作习惯。去年9 月,WebQQ更名为SmartQQ全新
    发布,但仍保留了原WebQQ版本。

    此外,腾讯“我的QQ中心”的“好友”功能已于2014年7月15日停止服务。据
    悉,此次WebQQ是继此之后的又一 业务调整。



    On 2014年12月09日 21:02, chenlin rao wrote:
    =encoding utf8

    =for advent_year 2014

    =for advent_title Webqq::Client模块介绍

    =for advent_author Perfi Wang


    =head2 Webqq::Client 背景来源

    最早的时候,加入了一个Python的群,看到群里有个QQ机器人可以自动帮
    大家查询天气

    群里贴出来的url会自动去获取下html的 <title> 内容,感觉蛮不错的,
    就想着也搞一个玩一下

    这个Python群的群主也很热心,搞了个开源的项目放到了github
    上:L<https://github.com/coldnight/twqq>

    源码下载下来安装的过程很艰辛,因为一些语法特性要求必须python2.7以
    上版本并且依赖的 pycurl包也非常难编译安 装

    折腾了很久总算也跑起来了,但毕竟不是Perl写的,不是很熟悉,用起来
    也觉得不爽

    在github上搜索了下 "webqq",得到很多搜索结果,有各种语言的实现,
    但活跃的项目不多

    尤其是基于Perl开发的项目少之又少,反而Python的倒一大堆,看不惯这
    种情况,决定自己 亲自用Perl写一个

    在这个过程中也了解到了,目前存在的各自版本的qq机器人都基本上是基
    于腾讯的webqq协议来 实现的

    因此要自己从头开发一个难度并不大,另外,自己有管理几个Perl的QQ群

    群里经常会有一些新手不知道该去哪里找模块,去哪里查文档,讨论一些
    代码问题的时候

    也总是不方便,因此也萌生了用Perl写一个智能化的QQ机器人,能够在群
    里协助大家学习 Perl语言

    例如在QQ群里发一个perldoc -f open,机器人就会自动把相关的文档贴出
    来,聊天过程中提到了某个模块的名字

    机器人也会自动的把模块相关的介绍、作者、用法自动贴出来,很贴心有木有?

    当然一个机器人能做的事情远远不止这些,Webqq::Client提供的只是一个
    客户端的框 架,剩下的任凭你的想象力

    =head2 原理说明

    模块采用AnyEvent的异步框架,尽可能的减少依赖模块,以便于安装和使
    用,提供面向对象的 使用方式

    如果你对AnyEvent有一定了解,那么相信不需要花费太多时间就很容易掌
    握模块的使用方法, 如果你并不了解 AnyEvent

    也没有关系,你要做的仅仅是三件事:

    1、登录

    2、设置感兴趣的回调函数,在回调函数中对消息进行处理

    3、运行

    =head2 模块用法简介

        use Webqq::Client;
        use Digest::MD5 qw(md5_hex);
        my $qq = 12345678;

        #你的qq密码请使用md5加密后再传递给Webqq::Client
        #我可不想被怀疑有盗号行为
        my $pwd = md5_hex('your password');

        #通过new来初始化一个客户端对象
        #debug=>1来打印debug信息方便调试
        my $client = Webqq::Client->new(debug=>0);

        #通过login进行登录
        $client->login( qq=> $qq, pwd => $pwd);

        #客户端加载ShowMsg插件,用于打印消息内容
        $client->load("ShowMsg");

        #登录成功后设置客户端的发送消息回调函数
        $client->on_send_message=sub{
            #当发送完消息后,传递给回调函数的是三个参数
            my $msg = shift;   #发送的原始消息
            my $is_success = shift; #发送消息状态,True为成功,False
    为失败
            my $status = shift; #发送消息状态,UTF8编码的中文,"发送
    成功" 或者 "发送失败"

            #客户端执行插件,这个插件的作用是直接打印消息到屏幕
            $client->call("ShowMsg",$msg);
        };

        #登录成功后设置客户端的接收消息回调函数
        $client->on_receive_message = sub{
            #当收到消息后,传递给回调函数的唯一参数是原始消息的一个
    hash引用
            my $msg = shift;

            #客户端执行插件,这个插件的作用是直接打印消息到屏幕
            $client->call("ShowMsg",$msg);

            #你可以对收到的消息进行任意其他的处理
            #你也可以使用Data::Dumper这样的模块来查看消息的结构,比如
            #use Data::Dumper;
            #print Dumper $msg;

            ...;
        };
        #客户端进入事件循环,正式开始运行
        $client->run();

    更多使用方法和介绍请参见文档

    =head2 关于回调函数

    目前提供了几种回调函数,可以满足大多是使用场景,请参见模块的文档介绍

    L<https://github.com/sjdy521/Webqq-Client/blob/master/doc/Client.pod>

    但有一点你需要注意,客户端是单线程的,你不应该在回调函数中长时间
    阻塞,这样会导致整个客户端 阻塞,什么事都不做

    =head2 关于插件

    客户端提供了一个基本的插件管理的机制,来方便你编写和运行插件,我
    们举个具体的例子说明下什么 是插件,怎么写一个插件

    比如我想实现一个插件,作用就是当收到群消息的时候就回复一个hello
    world到这个群上

    第一步:写一个插件模块

        package Webqq::Client::Plugin::HelloWorld;
        #模块中定义一个call函数
        sub call{
            #记住,call函数第一个参数永远是客户端对象
            my $client = shift;

            #这个插件还需要额外传入一个客户端收到的群消息才能进行后续
    的处理
            my $msg = shift;

            #我们只对群消息感兴趣
            return if $msg->{type} ne 'group_message';

            #使用客户端的reply_message()方法进行消息回复
            $client->reply_message($msg,"hello world");
        }
        1;

    第二步:加载插件

    #使用load方法进行加载,会自动查找
    Webqq::Client::Plugin::HelloWorld模块
        $client->load("HelloWorld");

    第三部:使用插件

        #使用call()方法调用插件
        $client->on_receieve_message = sub{
            my $msg = shift;
            $client->call("HelloWorld",$msg);
        };
        $client->run();


    =head2 模块从哪里获取

    目前模块已经发布到了github和cpan上

    github地址: L<https://github.com/sjdy521/Webqq-Client>

    metacpan地址:L<https://metacpan.org/pod/Webqq::Client>

    github更新会比较频繁,建议使用github随时保持和最新版本同步

    =head2 补充

    腾讯的新版本是smartqq,老版本是webqq,这里统一都称之为
    webqq,webqq功 能本身受限并不能向PC端那样 做很多事情

    另外,模块还处于不断开发完善中,存在bug和很多不完善之处是必然的,
    有什么问题或想法欢迎跟 作者反馈

    如果你是新手,希望有一个一起学习交流Perl的地方,欢迎加入我所在的
    QQ群: PERL学习交流 群号:144539789

    如果你是高手,又乐于助人,对新手有足够的耐心,也非常欢迎加入

    =head2 作者

    Perfi, E<lt>sjdy...@163.come <mailto:sjdy...@163.come><gt>

    =cut


    感谢灰灰的投稿,欢迎更多 Perler 参与活动。本文网页地址见:
    http://advent.perl-china.com/calendar/2014/09/
-- 您收到此邮件是因为您订阅了Google网上论坛上的“PerlChina Mongers 讨
    论组”群组。
    要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到
    perlchina+unsubscr...@googlegroups.com
    <mailto:perlchina+unsubscr...@googlegroups.com>。
    要发帖到此群组,请发送电子邮件至perlchina@googlegroups.com
    <mailto:perlchina@googlegroups.com>。
    访问此群组:http://groups.google.com/group/perlchina。
    要查看更多选项,请访问https://groups.google.com/d/optout。

-- 您收到此邮件是因为您订阅了Google网上论坛上的“PerlChina Mongers 讨
    论组”群组。
    要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到
    perlchina+unsubscr...@googlegroups.com
    <mailto:perlchina+unsubscr...@googlegroups.com>。
    要发帖到此群组,请发送电子邮件至perlchina@googlegroups.com
    <mailto:perlchina@googlegroups.com>。
    访问此群组:http://groups.google.com/group/perlchina。
    要查看更多选项,请访问https://groups.google.com/d/optout。


--
您收到此邮件是因为您订阅了Google网上论坛上的“PerlChina Mongers 讨论组” 群组。 要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到 perlchina+unsubscr...@googlegroups.com <mailto:perlchina+unsubscr...@googlegroups.com>。 要发帖到此群组,请发送电子邮件至perlchina@googlegroups.com <mailto:perlchina@googlegroups.com>。
访问此群组:http://groups.google.com/group/perlchina。
要查看更多选项,请访问https://groups.google.com/d/optout。

--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到perlchina+unsubscr...@googlegroups.com。
要向此群组发帖,请发送电子邮件至 perlchina@googlegroups.com。
访问此群组:http://groups.google.com/group/perlchina。
要查看更多选项,请访问 https://groups.google.com/d/optout。

回复