Mojo-WebQQ: 利用自己的VPS搭建QQ机器人

全文转载自主机博客

简介

  • 相信各位朋友在玩QQ的时候都能发现好多活跃在群中的QQ机器人,有的能帮群主管理群,有的插科打诨活跃气氛。
    之前也有一些人问我能不能在VPS上挂QQ,今天呢,我就给大家介绍一款这样的软件——Mojo-WebQQ。

关于

  • Mojo-WebQQ是使用Perl语言编写的Smartqq客户端框架,基于Mojolicious,要求Perl版本5.10+,可通过插件提供基于HTTP协议的api接口供其他语言或系统调用。

功能

  • 支持 群组踢人、禁言、设置/取消管理员、修改群成员名片、邀请好友入群、群签到
  • 支持 获取好友、群组、群成员的真实QQ号码
  • 支持 新增/失去好友、新增/退出群组、新增/失去群成员 等事件提醒(非实时)

同时Mojo-WebQQ提供了大量的插件以及API接口供其它程序调用,更多信息请看:https://github.com/sjdy521/Mojo-Webqq/blob/master/README.md

安装

  • Mojo-WebQQ支持 Windows/Linux/Mac 多平台,支持docker镜像,在此只介绍Linux平台的安装:

安装Perl

  • 安装之前请先确认下你的系统是否已经安装了Perl,因为除了windows,其他大部分的平台默认都可能已经预装过
  • 并且你的Perl版本至少5.10.1+,推荐5.14+
  • Perl官网下载页面 有包含Unix/Linux、Mac OS X、Windows多平台比较全面详细的安装说明

安装cpanm

curl -kL https://cpanmin.us | perl - App::cpanminus

安装 Mojo::Webqq

cpanm Mojo::Webqq

如何使用

由于Mojo-WebQQ提供了各式各样的插件和API,在此仅介绍基本功能。
详细文档请参考:https://metacpan.org/pod/distribution/Mojo-Webqq/doc/Webqq.pod

  • 在编辑器中写入以下代码:
#!/usr/bin/env perl
use Mojo::Webqq;
my $client = Mojo::Webqq->new();
$client->load("ShowMsg");
$client->load("SmartReply");
$client->run();
  • 将上述代码保存成 xxxx.pl 文件(必须UTF-8编码),使用perl解释器运行,按照提示,使用winscp等工具,将位于/tmp目录下的二维码下载,使用手机QQ扫描,你就启动了一个既能能显示消息又能智能回复的Mojo-WebQQ机器人。
  • 接下来介绍一下GroupManage插件进行群管理,常用群管理功能包括 新人入群欢迎、成员离开提醒、限制发言频率、限制发图频率。
  • 编辑上面提到的 xxxx.pl 文件:
#!/usr/bin/env perl
use Mojo::Webqq;
my $client = Mojo::Webqq->new();
$client->load("ShowMsg");
$client->load("GroupManage",data=>{      
allow_group => ["主机博客交流群"],  
#可选,允许插件的群,可以是群名称或群号码     
ban_group   => ["私人群",123456], 
#可选,禁用该插件的群,可以是群名称或群号码     
new_group_member => '欢迎新成员 @%s 入群[鼓掌][鼓掌][鼓掌]', 
#新成员入群欢迎语,%s会被替换成群成员名称     
lose_group_member => '很遗憾 @%s 离开了本群[流泪][流泪][流泪]', 
#成员离群提醒     
speak_limit => {
#发送消息频率限制         
period          => 10, 
#统计周期,单位是秒         
warn_limit      => 8, 
#统计周期内达到该次数,发送警告信息         
warn_message    => '@%s 警告, 您发言过于频繁,可能会被禁言或踢出本群', 
#警告内容         
shutup_limit    => 10, 
#统计周期内达到该次数,成员会被禁言         
shutup_time     => 600, 
#禁言时长         
kick_limit      => 15,   
#统计周期内达到该次数,成员会被踢出本群     
},     pic_limit => {
#发图频率限制         
period          => 600,         
warn_limit      => 10,         
warn_message   => '@%s 警告, 您发图过多,可能会被禁言或踢出本群',         
shutup_limit    => 15,
shutup_time     => 1800,         
kick_limit      => 30,     },     
keyword_limit => {         
period=> 600,         
keyword=>[qw(fuck 傻逼 你妹 滚)],         
warn_limit=>1,
warn_message   => '@%s 警告, 禁止进行人身攻击'         
shutup_limit=>3,
shutup_time     => 3600,        
kick_limit   =>5,     }, });
$client->run();

总结

优点

  • 轻便,易搭建,一段时间使用下来感觉用户体验良好,未发现明显bug。插件比较丰富,可以实现很多有趣的功能

缺点

  • 发现唯一的不足就是每使用超过四十八小时就会自动断线,而不会通知用户,掉线是由于webQQ最长允许的在线时间是四十八小时,希望作者可以在掉线的时候通过一些方式通知用户
  • PS:虽说Mojo-webQQ的搭建并不复杂,基础操作也挺简单,但是要想灵活的使用各种插件,还是需要费一番功夫,才能达到比较好的效果,适合有一定编程基础的人来使用。

参考文档