如题,废话不说,直接上代码。首先是登录QQ的小脚本
#!/usr/bin/perl
use Webqq::Client;
use Data::Dumper;
use Digest::MD5 qw(md5_hex);
use LWP::UserAgent;
use JSON;
my $qq = QQ号;
my $pwd = md5_hex(‘QQ密码‘);
my $client = Webqq::Client->new(debug=>0);#等于1开启debug
#############验证码##############
$client->load("PostImgVerifycode");
$client->on_input_img_verifycode() = sub{
my ($img_verifycode_file) = @_;
my $smtp = {
smtp =>‘邮箱smtp服务器‘,
user =>‘邮箱user‘,
pass =>‘邮箱pass‘,
from =>‘邮箱地址‘,
to =>‘邮箱地址‘,
from_title => ‘QQ机器人‘,
subject => ‘验证码‘,
};
return &{$client->plugin("PostImgVerifycode")}($client,$img_verifycode_file,$smtp);
};
######################################
登录QQ的时候可能会用到验证码,需要的话会以邮件的形式发送到邮箱,打开邮件里边的链接地址提交即可。
$client->login( qq=> $qq, pwd => $pwd);
sub tuling{
my $info = $_[0];
my $UA = LWP::UserAgent->new;
my $response = $UA->get(" #这里调用的事图灵机器人接口 实现了智能对话功能 用的话 自己去申请下地址 不用可以删掉该功能
my $str = $response->content;
my $json = new JSON;
my $json_obj = $json->decode("$str");
return $json_obj->{‘text‘}
}
$client->on_receive_message = sub{
my $msg = shift;
my $group_uin = $msg->{from_uin};
if ($msg->{content} =~ m!(.*)@小傻(.*)!) { #定义@什么内容会触发下边的回复这里定义的是@小傻 可以根据需要做更改
my $msg_content = $1 . $2;
my $s_msg_content = tuling("$msg_content");
my $s_msg = $client->create_group_msg(to_uin=>"$group_uin", content=> "$s_msg_content",);
$client->send_group_message($s_msg);
}
};
$client->load("Openqq");
$client->on_run = sub{
$client->call("Openqq",host=>"0.0.0.0",port=>5000); ##这里是开启api,开启后本地会监听一个端口 通过该端口发送查询等一系列操作
};
$client->run();##之后就是调用api发送qq消息的脚本啦 如下
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON;
use URI::Escape;
sub get_gid {
my $group_name = $_[0];
my $UA = LWP::UserAgent->new;
my $response = $UA->get(" #定义api地址 只需要替换ip
my $str = $response->content;
my $json = new JSON;
my $json_obj = $json->decode("$str");
foreach my $group (@{ $json_obj }){
if ($group->{‘ginfo‘}->{‘name‘} eq "$group_name"){
return $group->{‘ginfo‘}->{‘gid‘} ;
}
}
}
sub send_qq_mess {
my $content = $_[0];
my $gid = get_gid($_[1]);
my $UA = LWP::UserAgent->new;
my $response = $UA->get(" #定义api地址 只需要替换ip
return $response->content;
}
my $c = uri_escape($ARGV[0]);
print send_qq_mess($c,"Monitoring_alarm") ; # 这里的Monitoring_alarm是指要发送报警的群名称 必须是QQ所在的群第一个脚本运行的话 加上nohup 否者验证码会丢tmp目录下 不会发邮件 QQ登录成功后 查看是否监听了5000端口(可改),一切ok了 执行第二个脚本 比如说名字是 send ,那么执行格式为send your_send_content 之后你刚才定义的群名称的那个群会收到消息 这个脚本因为有api可以任意调用,初学perl 大神别见笑。
最后感谢Webqq::Client模块的提供者。
本文出自 “perling” 博客,请务必保留此出处http://zhaolin.blog.51cto.com/9397923/1630115
原文地址:http://zhaolin.blog.51cto.com/9397923/1630115