Mojo-Webqq

 view release on metacpan or  search on metacpan

lib/Mojo/Webqq.pm  view on Meta::CPAN

package Mojo::Webqq;
use strict;
use Carp ();
$Mojo::Webqq::VERSION = "2.2.7";
use Mojo::Webqq::Base 'Mojo::EventEmitter';
use Mojo::Webqq::Log;
use Mojo::Webqq::Cache;
use Time::HiRes qw(gettimeofday);
use File::Spec ();
use base qw(Mojo::Webqq::Model Mojo::Webqq::Client Mojo::Webqq::Plugin Mojo::Webqq::Request Mojo::Webqq::Util Mojo::Webqq::Model::Ext);

has domain              => 'w.qq.com';
has account             => sub{ $ENV{MOJO_WEBQQ_ACCOUNT} || 'default'};
has start_time          => time;
has pwd                 => undef;
has security            => 0;
has mode                => 'online';   #online|away|busy|silent|hidden|offline|callme,
has type                => 'smartqq';  #smartqq
has login_type          => 'qrlogin';    #qrlogin|login
has http_debug          => sub{$ENV{MOJO_WEBQQ_HTTP_DEBUG} || 0 };
has ua_debug            => sub{$_[0]->http_debug};
has ua_debug_req_body   => sub{$_[0]->ua_debug};
has ua_debug_res_body   => sub{$_[0]->ua_debug};
has ua_connect_timeout      => 10;
has ua_request_timeout      => 120;
has ua_inactivity_timeout   => 120;
has model_update_timeout    => 15;#sub{$_[0]->ua_request_timeout};
has log_level           => 'info';     #debug|info|msg|warn|error|fatal
has log_path            => undef;
has log_encoding        => undef;      #utf8|gbk|...
has log_head            => undef;
has log_unicode         => 0;
has log_console         => 1;
has send_interval       => 3;           #全局发送消息间隔时间
has check_account       => 0;           #是否检查预设账号与实际登录账号是否匹配
has disable_color       => ($^O eq 'MSWin32' ? 1 : 0);           #是否禁用终端打印颜色
has ignore_send_retcode      => sub{[1202,100100]}; #对发送消息返回这些状态码不认为发送失败,不重试
has ignore_poll_retcode      => sub{[102,109,110,1202,100012]}; #对接收消息返回这些状态码不认为接收失败,不重新登录
has ignore_poll_http_code => sub{[504,502]}; #忽略接收消息请求返回的502/504状态码,因为并不影响消息接收,以免引起恐慌
has ignore_unknown_id   => 1; #其他设备上自己发送的消息,在webqq上会以接受消息的形式再次接收到,id还未知,是否忽略掉这种消息
has allow_message_sync => 0; #是否允许同步来自其他设备登录账号发送的消息,由于webqq自身发送消息后也会收到服务端重复的消息,且没办法和来自其他设备的消息区分,会导致出现一些不期望çš...
has json_codec_mode     => 0;  #0表示使用from_json/to_json 1表示使用decode_json/encode_json

has default_send_real_comp_sign => 0; #设为真值则不对发送出的<>进行转化。
# 然而这样便只能送出&lt;&gt;。

has group_member_card_cut_length => 21; #群名片截取长度
has group_member_card_ext_only => 0; #群名片信息是否只从扩展接口中获取,这样能够获取到完整的群名片,但并不是100%可靠
has group_member_use_fullcard => 0; #使用完整的群名片。
has group_member_use_friend_markname => 1; #使用备注名(如果存在)。

#原始信息中包含id/name/card
#扩展信息中包含uid/name/card
#二者没办法直接建立关联,只能够通过 name+card 相同时认为是匹配同一个用户,并非严谨,但大部分情况下可以满足要求
#group_member_identify_callback提供了对name和card进行自定义处理
#传递给group_member_identify_callback的参数是群成员的 ($name,$card)
#默认 group_member_identify_callback 不设置,相当于sub { my($name,$card)=@_; return $name . $card};
has group_member_identify_callback => undef;

has notice_api => 'https://raw.githubusercontent.com/sjdy521/Mojo-Webqq/master/NOTICE';
has is_fetch_notice => 1; #是否启动时获取公告

has is_init_friend         => 1;                            #是否在首次登录时初始化好友信息
has is_init_group          => 1;                            #是否在首次登录时初始化群组信息
has is_init_discuss        => 1;                            #是否在首次登录时初始化讨论组信息

has is_update_user          => 0;                            #是否定期更新个人信息
has is_update_group         => 1;                            #是否定期更新群组信息
has is_update_group_member  => 1;                            #是否定期更新群成员信息
has is_update_group_member_ext => 0;                         #是否定期更新群成员扩展信息
has is_update_friend        => 1;                            #是否定期更新好友信息
has is_update_discuss       => 1;                            #是否定期更新讨论组信息
has update_interval         => 600;                          #定期更新的时间间隔

has encrypt_method      => "perl";     #perl|js
has tmpdir              => sub {$ENV{MOJO_WEBQQ_TMPDIR} || File::Spec->tmpdir();};
has pic_dir             => sub {$_[0]->tmpdir};



( run in 2.024 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )