利用Mojo::Webqq在QQ群中當一個復讀機
阿新 • • 發佈:2019-02-18
參考文件
簡單的程式碼
#!/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();