当前位置: 首页 > 工具软件 > Mojo-Webqq > 使用案例 >

利用Mojo::Webqq在QQ群中当一个复读机

潘志国
2023-12-01

参考文档

sjdy521/Mojo-Webqq
Mojo-Webqq插件使用文档

简单的代码

#!/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();
 类似资料: