1. 程式人生 > >利用Mojo::Webqq在QQ群中當一個復讀機

利用Mojo::Webqq在QQ群中當一個復讀機

參考文件

簡單的程式碼

#!/usr/bin/env perl
#作者:znw
#作用:自動復讀機
#     當QQ群冷群了,或者某人發了一條訊息,超過一定時間沒人回覆,復讀之。
use Mojo::Webqq;
my ($host,$port,$post_api);
my $group;#指定群
my %group_msgs;#群訊息
my %last_msgs;#最新訊息
my $suces_nums;#復讀成功數量
$host = "0.0.0.0"; #傳送訊息介面監聽地址,沒有特殊需要請不要修改
$port = 5000;      #傳送訊息介面監聽埠,修改為自己希望監聽的埠
#$post_api = 'http://xxxx' #接收到的訊息上報介面,如果不需要接收訊息上報,可以刪除或註釋此行
my $client = Mojo::Webqq->new( security=>true, allow_message_sync=>1, ); $client->on(ready=>sub{ my $client = shift; #你的程式碼寫在此處 $group = $client->search_group(name=>"Perl學習群"); $suces_nums = 0; }); $client->load("ShowMsg"); $client->on(receive_message=>
sub{ my ($client,$msg)=@_; if($msg->group == $group){ if(exists($group_msgs{$msg->group->uid})){ $group_msgs{$msg->group->uid} += 1; #print "$msg->group->uid => $group_msgs{$msg->group->uid}\n"; print $msg->group->name.":".$group_msgs{$msg
->group->uid}."\n"; } else { $group_msgs{$msg->group->uid} = 1; print $msg->group->name.":".$group_msgs{$msg->group->uid}."\n"; } #$last_msgs{$msg->group->uid} = $msg->text; #30秒一查 $client->timer(30,sub{ #確實沒人回覆,且自己沒有復讀過這句話,進行復讀 if($group_msgs{$msg->group->uid} eq 1 && $msg->text ne $last_msgs{$msg->group->uid}) { $client->reply_message($msg,$msg->text); $group_msgs{$msg->group->uid} = 0; $last_msgs{$msg->group->uid} = $msg->text; $suces_nums += 1; print "success post : ".$suces_nums."\n"; } #否則,積壓訊息-1 else{ $group_msgs{$msg->group->uid} -= 1; print $msg->group->name.":".$group_msgs{$msg->group->uid}."\n"; } }); } #$msg->dump(); }); #$client->load("Openqq",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api}); $client->run();