Mojo-Webqq
view release on metacpan or search on metacpan
lib/Mojo/Webqq.pod view on Meta::CPAN
#ä½ ä¹å¯ä»¥ä½¿ç¨$msg->dump() æ¥æå°æ¶æ¯ç»æ
});
#readyäºä»¶è§¦åæ¶ è¡¨ç¤ºå®¢æ·ç«¯ä¸ååå¤å°±ç»ªï¼å·²ç»æåç»å½ãå·²ç»å è½½å®ä¸ªäºº/好å/群信æ¯ç
#ä½ ç代ç 建议尽éåå¨ ready äºä»¶ä¸
$client->on(ready=>sub{
my $client = shift;
#ä½ ç代ç å卿¤å¤
});
#客æ·ç«¯å¼å§è¿è¡
$client->run();
#runç¸å½äºæ§è¡ä¸ä¸ªæ»å¾ªç¯ï¼ä¸ä¼è·³åºå¾ªç¯ä¹å¤
#æä»¥runåºè¯¥æ»æ¯æ¾å¨ä»£ç æåæ§è¡ï¼å¹¶ä¸ä¸è¦å¨runä¹ååæ·»å ä»»ä½èªå·±ç代ç äº
=head1 DESCRIPTION
éè¿è¯¥é¡¹ç®ï¼ä½ å¯ä»¥å®æåºæ¬çç»å½ãæ¥æ¶ååéæ¶æ¯ï¼å¨æ¤åºç¡ä¸ä½ å¯ä»¥éè¿æä»¶çå½¢å¼å®ç°æ´å¤éå åè½ï¼æ¯å¦ï¼
群管çãè天记å½ç»è®¡ãQQæ¶æ¯æ¥è¦ãQQæºå¨äººãå¨QQç¾¤ä¸æ§è¡Perl代ç ï¼æ¥è¯¢Perldocææ¡£ãæ¶æ¯è½¬åãQQåIRCèéçç
åå
çL<Webqq::Client>模åéç¨çæ¯LWP+AnyEventå®ç°é»å¡åéé»å¡è¯·æ±
ä»£ç æ¯è¾æ··ä¹±ï¼åå¨è¯¸å¤bugï¼æç¨æ§å坿©å±æ§è¾å·®
æ¤é¡¹ç®æ¯L<Webqq::Client>模åçéæï¼åºäºL<Mojolicious>æ¡æ¶ï¼å
·ä½æ´å¤è¯å¥½ç¹æ§ï¼æ¯å¦ï¼
åºäºL<Mojo::Base>æ´å¥½ç对象模åãåºäºL<Mojo::EventEmitter>çµæ´»çäºä»¶ç®¡çæºå¶ã
åºäºL<Mojo::UserAgent>ç»ä¸çé»å¡åéé»å¡HTTP请æ±ãåºäºL<Mojo::Log>è½»éçº§çæ¥å¿è®°å½æ¡æ¶ çç
æ¨èä½ å¨ä½¿ç¨æ¬æ¨¡åç忶乿´å¤çäºè§£L<Mojolicious>
=head1 æ°æ®ç±»å
æ°æ®ç±»åå
å« ä¸ªäººã好åã群ç»ãè®¨è®ºç» å 大类åï¼æ¯ç§ç±»åé½ä¸é¨è®¾è®¡äºç±»
è¿äºç±»é½ç»§æ¿L<Mojo::Webqq::Model::Base>å
·ædumpçæ¹æ³ï¼è¿äºæ°æ®ç±»ååç±ç³»ç»èªå¨å建åç»´æ¤
ä¸è¬æ
åµä¸ï¼ä½ åªéè¦å¯¹å¯¹è±¡è¿è¡åªè¯»æä½
=head2 Mojo::Webqq::User 个人
屿§:
id #æ¬æ¬¡ç»å½å¯ä¸æ è¯ï¼åéæ¶æ¯æ¶éè¦ç¨å°ï¼idåqqå·æ¯ä¸¤ä¸ªä¸åçæ¦å¿µ
uid #qqå¸å·
name #æµç§°
type #åºå®å¼"user"
phone #çµè¯
birthday #çæ¥
occupation #èä¸
college #大å¦
blood #è¡å
constel #æåº§
homepage #主页
state #å¨çº¿ç¶æ online|away|busy|callme|silent|hidden
country #å½å®¶
city #åå¸
displayname #å½ååæµç§°å®å
¨ä¸æ ·
shengxiao #çæ
email #é®ç®±
client_type #åºå®å¼"web"
province #ç份
sex #æ§å«
mobile #ææº
signature #个æ§ç¾å
æ¹æ³ï¼
dump
is_me #å¤æå¯¹è±¡æ¯å¦æ¯èªå·±
å®é
æ³è¦è·åè¯¥å¯¹è±¡ä¿¡æ¯æ¶ï¼æ¯éè¿å®¢æ·ç«¯æä¾ç user 屿§æ¥è·å
$client->user #è¿åçæ¯ä¸ä¸ªMojo::Webqq::User对象
$client->user->name #è·åå¸å·æµç§°
$client->user->id #è·åå¸å·id
$client->user->dump
=head2 Mojo::Webqq::Friend 好å
屿§ï¼
id #好åçidï¼ä»
卿¬æ¬¡ç»å½æé´å¯ä¸ï¼å¤æ¬¡ç»å½å¯è½ä¼åçååï¼è®°ä½ id䏿¯qqå·
uid #好åçqqå·ç
type #åºå®å¼"friend"
category #好åæå±çåç»
name #å¥½åæµç§°
markname #好å夿³¨åç§°
displayname #å¦æè®¾ç½®äºmarkname å°±è¿åmarkname å¦åè¿ånick
is_vip #æ¯å¦æ¯vipä¼å
vip_level #vipç级
state #好åç¶åµ online|away|busy|silent|offline
client_type #好å客æ·ç«¯ç±»å pc|mobile|iphone|unknown
æ¹æ³:
send #ç»å¥½å对象åéæ¶æ¯
is_friend #å¤æå¯¹è±¡æ¯å¦æ¯å¥½å
dump
代ç 示ä¾ï¼
my $friend = $client->search_friend(name=>xxx);
$client->print("好ååç»ä¸º: ",$friend->category,"\n"); #使ç¨$client->print()å¯ä»¥èªå¨æ£æµç»ç«¯ç¼ç ï¼é²æ¢ä¹±ç
$friend->dump();
$friend->send("hello world"); #æ¯$client->send_friend_message($friend,"hello world")æ´ç®æ´
#éå好å
$client->each_friend(sub{
my($client,$friend) = @_;
...;
});
for my $friend ($client->friends){
...;
}
=head2 Mojo::Webqq::Group 群ç»
屿§ï¼
id #群çidï¼ä»
卿¬æ¬¡ç»å½æé´å¯ä¸ï¼å¤æ¬¡ç»å½å¯è½ä¼åçåå
type #åºå®å¼"group"
uid #群å·ç
name #群åç§°
memo #群说æ
role #create|attend|manage åå«è¡¨ç¤ºå建ç群|å å
¥ç群|管çç群
owner_id #ç¾¤æ¥æè
çid
owner_uid #ç¾¤æ¥æè
çqq
markname #ç¾¤å¤æ³¨åç§°
displayname #å¦æè®¾ç½®äºgmarkname å°±è¿ågmarkname å¦åè¿ågname
createtime #群å建æ¶é´
level #群ç级
member #群æåï¼æ¤å±æ§æ¯ä¸ä¸ªæ°ç»å¼ç¨ï¼æ°ç»ä¸æ¯ä¸ªå
ç´ æ¯ä¸ä¸ªMojo::Webqq::Group::Memberç对象
max_member #æå¤§ç¾¤æåæ°é
max_admin #æå¤§ç®¡çåæ°é
æ¹æ³ï¼
search_group_member #æ ¹æ®ç¾¤æå屿§æç´¢ï¼æ éä¸ä¸æè¿å第ä¸ä¸ªç¾¤æå对象ï¼å表ä¸ä¸æè¿åå
¨é¨ï¼æç´¢å¤±è´¥è¿åundef
each_group_member #å¨ç¾¤ä¸éåææç群æå
invite_friend #é请好åå
¥ç¾¤
kick_group_member #踢åºç¾¤æå
set_group_admin #设置群æå为管çå
remove_group_admin #åæ¶ç¾¤æåç管çå身份
set_group_member_card #设置群åç
shutup_group_member #对群æåè¿è¡ç¦è¨
speakup_group_member #åæ¶ç¾¤æåç¦è¨
members #è¿å群æå对象å表
member_count #è¿åå½å群æåæ°é
send #ç»ç¾¤å¯¹è±¡åéæ¶æ¯
me #è¿åèªå·±å¨ç¾¤æåä¸ç对象 (Mojo::Webqq::Group::Member)
lib/Mojo/Webqq.pod view on Meta::CPAN
msg #åéæ¶æ¯ç¶æä¸ææè¿°ï¼åéæå|åé失败
info #åéæ¶æ¯æ´å¤é误æè¿°ä¿¡æ¯
æ¹æ³ï¼
dump #æå°æ¶æ¯ç»æï¼ä¸»è¦ç¨äºè°è¯
to_json_hash #å°æ¶æ¯è½¬æ¢ä¸ºjsonå
¼å®¹çhashï¼æ¹ä¾¿åå¤é¨ç³»ç»äº¤äº
#常è§çæ¥æ¶ååéæ¶æ¯é½æ¯æè¯¥æ¹æ³ï¼ä¸æä¸åèµè¿°
is_at #æ¶æ¯æ¯å¦è¾ç¹æäººï¼å¸¸è§çæ¥æ¶ååéæ¶æ¯é½æ¯æè¯¥æ¹æ³ï¼ä¸æä¸åèµè¿°
faces #è¿åæ¶æ¯ä¸ç表æ
å
容
images #è·åå°æ¶æ¯ä¸å¾çå
å®¹åæ§è¡æå®åè°ï¼éå对å
·ä½æä¸ªæ¶æ¯è¿è¡å¾çå¤ç
#åè receive_pic äºä»¶ï¼å¯ä»¥è®¾ç½®å
¨å±æ¥æ¶å¾ççå¤çåè°
reply #å¯¹æ¶æ¯è¿è¡åå¤
#妿class为recvï¼ç¸å½äºåéå
å®¹ç»æ¶æ¯åéè
ï¼å¦æclass为sendï¼ç¸å½äºåéå
å®¹ç»æ¶æ¯çæ¥æ¶è
is_success #夿åéæ¶æ¯æ¯å¦æå
示ä¾ä»£ç :
$msg->sender->displayname; #仿¶æ¯ä¸ è·ååéè
çåç§°
my $json_hash = $msg->to_json_hash(); #è·åå°hashå¼ç¨
my $json_text = $client->to_json($json_hash); #å°hash转æ¢ä¸ºjsonå符串
$msg->dump();
$msg->reply("hello world"); #æ¯$client->reply_message($msg,"hello world")æ´ç®æ´
$msg->is_at(); #夿åéææ¥æ¶çæ¶æ¯ä¸æ¯å¦æè¾ç¹èªå·±
$msg->is_at($member); #夿åéææ¥æ¶çæ¶æ¯ä¸æ¯å¦æè¾ç¹æä¸ªæå
$msg->is_at($friend); #夿åéææ¥æ¶çæ¶æ¯ä¸æ¯å¦æè¾ç¹æä¸ªå¥½å
my @faces = $msg->faces(); #("[å¾®ç¬]","[æµæ³ª]","[害ç¾]")
$msg->images(sub{
my($client,$image_path,$sender) = @_;
});
#å
¨å±å¾çå¤çäºä»¶
$client->on(receive_pic=>sub{
my($client,$image_path,$sender) = @_;
});
text #çº¯ææ¬æ¶æ¯å
容ï¼ä¸å
å«è¡¨æ
å¾çç
raw_content #æ¶æ¯åå§å
容 ä¸ä¸ªæ°ç»å¼ç¨
=head1 客æ·ç«¯å±æ§
$client->security #æ¯å¦å¼å¯å®å
¨å å¯
$client->mode #ç»å½ç¶æ
$client->type #ç±»å åºå®å¼ smartqqï¼Mojo::Webqqåªæ¯æsmartqq
$client->htto_debug #httpè¯·æ±æ¯å¦æå°debugä¿¡æ¯
$client->log_level #æ¥å¿è®°å½ç级 é»è®¤info
$client->log_path #æ¥å¿è®°å½è·¯å¾ï¼é»è®¤undefï¼æå°å°STDOUT
$client->version #客æ·ç«¯çæ¬
$client->account #ç»å½å¸å·ï¼ä¸å¿
æ¯çå®çqqå·ç ï¼å¯ä»¥èªç±å®ä¹ï¼æ ¹æ®æ«ç ç¡®å®å®é
ç»éqq
=head1 客æ·ç«¯æ¹æ³
=head2 new()
account #ç»å½å¸å·ï¼é»è®¤default,ä¸å¿
æ¯çå®qqå·ç ï¼å¯èªç±å®ä¹ï¼æ ¹æ®æ«ç ç¡®å®å®é
ç»éqq
security #è®¾ç½®è¯¥åæ°ï¼å°ä½¿å¾åéåæ¥æ¶æ¶æ¯ä½¿ç¨httpså å¯
mode #设置ç»å½ç¶æï¼é»è®¤æ¯onlineï¼æ¯æonline|away|busy|silent|hidden|offline|callme
http_debug #è®¾ç½®è¯¥åæ°ï¼æå°è°è¯ä¿¡æ¯
keep_cookie #é»è®¤ä¸º1ï¼0表示ä¸ä¿åç»å½cookieï¼1表示ä¿åç»å½cookieæ¹ä¾¿ä¸æ¬¡ç´æ¥æ¢å¤ç»å½
disable_color #é»è®¤ä¸º0ï¼æ¯å¦ç¦ç¨ç»ç«¯å½©è²æå°
send_interval #é»è®¤ä¸º3sï¼å
¨å±åéæ¶æ¯æ¶é´é´éï¼é´é太å°ä¼å¯¼è´æ¶æ¯åéé¢ç¹ï¼å¯è½æè¢«å°å·çé£é©
ignore_send_retcode #对åéæ¶æ¯è¿åè¿äºç¶æç ä¸è®¤ä¸ºåé失败ä¸éè¯,åæ°æ¯ä¸ä¸ªæ°ç»å¼ç¨
#è®¾ç½®ç¤ºä¾ Mojo::Webqq->new(ignore_send_retcode=>[1202,100100]);
#é»è®¤å¼ [1202,100100] 䏿¸
æ¥ä½ç¨è¯·ä¸è¦éæè®¾ç½®
ignore_poll_retcode #å¯¹æ¥æ¶æ¶æ¯è¿åè¿äºç¶æç ä¸è®¤ä¸ºæ¥æ¶å¤±è´¥ï¼ä¸éæ°ç»å½ï¼é¿å
é¢ç¹æçº¿
#è®¾ç½®ç¤ºä¾ Mojo::Webqq->new(ignore_poll_retcode=>[102,109,110,1202,100012]);
#é»è®¤å¼ [102,109,110,1202,100012] 䏿¸
æ¥ä½ç¨è¯·ä¸è¦éæè®¾ç½®
ignore_unknown_id #å
¶ä»è®¾å¤ä¸èªå·±åéçæ¶æ¯ï¼å¨webqqä¸ä¼ä»¥æ¥åæ¶æ¯çå½¢å¼åæ¬¡æ¥æ¶å°
#æ¶æ¯åéè
æ¯ä¸ä¸ªæªç¥çidï¼é常影åå¾å¤åè½çæ£å¸¸å·¥ä½ï¼è¯¥é项å³å®æ¯å¦å¿½ç¥æè¿ç§æ¶æ¯
#é»è®¤å¼ä¸º 1
allow_message_sync #æ¯å¦å
è®¸åæ¥æ¥èªå
¶ä»è®¾å¤ç»å½è´¦å·åéçæ¶æ¯ é»è®¤ä¸º0
#ç±äºwebqqèªèº«åéæ¶æ¯åä¹ä¼æ¶å°æå¡ç«¯éå¤çæ¶æ¯
#䏿²¡åæ³åæ¥èªå
¶ä»è®¾å¤çæ¶æ¯åºåï¼ä¼å¯¼è´åºç°ä¸äºä¸ææçç»æï¼æ¯å¦æäºæä»¶ä¼é·å
¥æ»å¾ªç¯ç
#å æ¤é»è®¤ä¸å¼å¯æ¶æ¯åæ¥ï¼å¦æä½ åªæ¯ç¨æ¥ircè天ï¼åå¯ä»¥èèå¼å¯æ¤é项
#å¯ä»¥åæ¥æ¥èªå
¶ä»è®¾å¤çæ¶æ¯ï¼ä½éªä¼æ´å¥½ä¸äº
log_console #æå°å°æä»¶ç忶乿å°å°å±å¹ï¼æ¹ä¾¿è°è¯ï¼é»è®¤ 1
log_level #é»è®¤çº§å«ä¸ºinfoï¼å¯ä»¥è®¾ç½®debug|info|warn|error|fatal
log_path #é»è®¤å®¢æ·ç«¯è¾åºå
容æå°å°STDOUT è®¾ç½®è¯¥åæ°å¯ä»¥å°å®¢æ·ç«¯è¾åºéå®åå°æä»¶
log_encoding #è¾åºæ¥å¿çç¼ç ï¼é»è®¤èªå¨æ£æµï¼å¦æåºç°ä¹±ç å¯ä»¥å°è¯æå¨è®¾ç½®ä¸ä¸è¾åºç¼ç
#ç¼ç å¿
é¡»æ¯ Encode æ¨¡åæ¯æçæ ¼å¼ï¼æ¯å¦utf8 gbkç
tmpdir #ç¨åºä½¿ç¨ç临æ¶ç®å½ï¼ä¸»è¦ç¨äºä¿åä¸äºéªè¯ç ãäºç»´ç çæ°æ®ï¼é»è®¤ä¸ºç³»ç»ä¸´æ¶ç®å½
pic_dir #å¾çæ¥æ¶é»è®¤å°åï¼é»è®¤ä¸º tmpdir åæ°æè®¾ç½®çç®å½
verifycode_path #å¾çéªè¯ç ä¿åè·¯å¾ï¼é»è®¤æ¯ tmpdir ç®å½ä¸åºå®æä»¶å
qrcode_path #äºç»´ç ä¿åè·¯å¾ï¼é»è®¤æ¯ tmpdir ç®å½ä¸åºå®æä»¶å
cookie_path #ç»å½cookieæ¥æ¶ä¿åå°åï¼é»è®¤ä¸º tmpdir åæ°æè®¾ç½®çç®å½ä¸åºå®æä»¶å
#ç¨åºä¼æ ¹æ®å®é
éè¦èªå¨æéå 载好åã群ã讨论ç»ä¿¡æ¯ï¼é¦æ¬¡ç»å½å è½½è¿äºä¿¡æ¯æ¯ä¸å¿
é¡»ç
#å¦æä½ çç¾¤ç»æ°éé常æäººï¼é¦æ¬¡å è½½ä¼ä¸¥éå½±åè¿è¡é度ï¼è¿ç§æ
åµä¸å»ºè®®éæ©æ§çåæ¶æäºé»è®¤å è½½è¡ä¸º
is_init_friend #æ¯å¦å¨é¦æ¬¡ç»å½æ¶åå§å好åä¿¡æ¯ï¼é»è®¤å¼ 1ï¼æ®æµè¯è®¾ç½®ä¸º0å¯è½å½±åç»å½
is_init_group #æ¯å¦å¨é¦æ¬¡ç»å½æ¶åå§å群ç»ä¿¡æ¯ï¼é»è®¤å¼ 1
is_init_discuss #æ¯å¦å¨é¦æ¬¡ç»å½æ¶åå§å讨论ç»ä¿¡æ¯ï¼é»è®¤å¼ 1
#ç¨åºä¼å®ææ´æ°ä¸ªäººã好åã群ã讨论ç»ä¿¡æ¯ï¼ç®çæ¯ä¸ºäºå¯ä»¥æç¥æ°å¢çæåã失å»ç好åç
#å¦æä½ å®å
¨ä¸å
³æ³¨è¿äºç¹æ§ï¼å¯ä»¥å
³éå®ææ´æ°
is_update_user #æ¯å¦å®ææ´æ°ä¸ªäººä¿¡æ¯ï¼é»è®¤å¼ 0
is_update_group #æ¯å¦å®ææ´æ°ç¾¤ç»ä¿¡æ¯ï¼é»è®¤å¼ 1
is_update_group_member #æ¯å¦å®ææ´æ°ç¾¤æåä¿¡æ¯ï¼é»è®¤å¼ 1
is_update_group_member_ext #æ¯å¦å®ææ´æ°ç¾¤æåæ©å±ä¿¡æ¯ï¼æ©å±ä¿¡æ¯å
å«QQå·ï¼é»è®¤å¼0ï¼å³æ°å¢æåæä¼æ´æ°
is_update_friend #æ¯å¦å®ææ´æ°å¥½åä¿¡æ¯ï¼é»è®¤å¼ 1
is_update_discuss #æ¯å¦å®ææ´æ°è®¨è®ºç»ä¿¡æ¯ï¼é»è®¤å¼ 1
update_interval #宿¶æ´æ°ç¾¤ç»ã好åã讨论ç»çä¿¡æ¯çæ¶é´é´éï¼é»è®¤600ç§
group_member_use_friend_markname #群æå使ç¨å¥½å夿³¨å(妿æ¯å¥½åå
³ç³»å¹¶ä¸å¤æ³¨åå¨)
is_fetch_notice #æ¯å¦è·åå
¬åä¿¡æ¯ï¼é»è®¤å¼ 1
msg_ttl #åéå¤±è´¥çæ¶æ¯ï¼éè¯æ¬¡æ°ï¼é»è®¤æ¯5
qrcode_count_max #æ¯ä¸ªäºç»´ç 齿ä¸ä¸ªè¿ææ¶é´ï¼è¿æåä¼éæ°ä¸è½½ä¸ä¸ªäºç»´ç ç»§ç»çå¾
æ«æ
#妿çå¾
æ«ç 次æ°è¶
è¿ qrcode_count_max 客æ·ç«¯ä¼åæ¢è¿è¡ï¼é»è®¤10次
( run in 0.779 second using v1.01-cache-2.11-cpan-d8267643d1d )