作为群主,总希望有一个 QQ 机器人帮助自己管理群,实现自动的警告、禁言等操作,这样能省下不少时间。今天就介绍一下这款 Mojo-WebQQ,主要功能就是群管理,同时还能接入图灵机器人的 API,实现自动回复,活跃群气氛。
或者,你单纯的想在 VPS 上挂 QQ,那也是可以的。再或者,在 VPS 上像黑客那样聊天。
Mojo-WebQQ 简介
Mojo-WebQQ 是一个使用 Perl 语言编写的 SmartQQ / WebQQ 客户端框架(非GUI),可以通过插件提供基于 HTTP 协议的 API 接口供其他语言或系统调用。
特色功能
- 支持 群组踢人、禁言、设置/取消管理员、修改群成员名片、邀请好友入群、群签到
- 支持 获取好友、群组、群成员的真实QQ号码
- 支持 新增/失去好友、新增/退出群组、新增/失去群成员 等事件提醒(非实时)
- 支持 Windows/Linux/Mac 多平台,支持docker镜像,易安装部署,不懂Perl也能用
- 提供 基于HTTP协议的API接口 ,简洁丰富,方便和其他编程语言集成
- 一个产品狗的倾情之作,代码由内而外都更加注重“用户体验”,外加主人人品极好,你懂的
安装 Mojo-WebQQ
这里以我自己的配置环境为例,介绍一下安装过程,更详细的请前往参考文献的 Github 项目主页。
安装环境:Ubuntu 16.04 LTS 64bit
1. 安装 Perl
安装之前请先确认下你的系统是否已经安装了 Perl,一般 Ubuntu 都自带了,通过命令:
perl -v
可以查看 Perl 版本号。至少需要 5.10.1 +,推荐 5.14 +。
由于 Ubuntu自带,就不废话了。
2. 安装 cpanm
包管理工具(若已安装可忽略)
方法:
cpan -i App::cpanminus
3. 使用 cpanm
在线安装 Mojo::Webqq 模块
cpanm Mojo::Webqq
如果服务器在国内,可以直接使用国内镜像站点:
cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Webqq
一般没什么问题,至此就安装结束了。有问题请看参考文献的 Github 项目地址。
使用 Mojo-WebQQ
这里我只介绍一下使用这个 QQ 机器人来管理群,包括欢迎新人、禁言、插科打诨等功能。更多用法,还是自己去项目主页看。
首先我们先小试牛刀,看看能不能运行起来。
新建一个 qq.pl
文件:
vim qq.pl
写上如下内容:
#!/usr/bin/env perl use Mojo::Webqq; my $client = Mojo::Webqq->new(); $client->load("ShowMsg"); $client->run();
保存(Esc 然后 :wq
)。然后运行试试:
perl qq.pl
一般没啥问题,会看到初始化信息。比如(我这个已经是加载了插件的,具体的请继续看):
root@bwh-hk:~# perl qq.pl
[17/11/16 21:22:39] [info] 当前正在使用 Mojo-Webqq v2.1.4
[17/11/16 21:22:39] [info] 客户端加载cookie[ /tmp/mojo_webqq_cookie_default.dat ] [17/11/16 21:22:39] [info] 执行插件[ Mojo::Webqq::Plugin::GroupManage ] [17/11/16 21:22:39] [info] 执行插件[ Mojo::Webqq::Plugin::ShowMsg ] [17/11/16 21:22:39] [info] 执行插件[ Mojo::Webqq::Plugin::StockInfo ] [17/11/16 21:22:39] [info] 执行插件[ Mojo::Webqq::Plugin::MobileInfo ] [17/11/16 21:22:39] [info] 执行插件[ Mojo::Webqq::Plugin::Translation ] [17/11/16 21:22:39] [info] 执行插件[ Mojo::Webqq::Plugin::ZiYue ] [17/11/16 21:22:39] [info] 执行插件[ Mojo::Webqq::Plugin::SmartReply ] [17/11/16 21:22:39] [info] 检测到最近登录活动,尝试直接恢复登录…
[17/11/16 21:22:39] [info] 获取数据验证参数…
[17/11/16 21:22:39] [info] 尝试进行登录(2)…
[17/11/16 21:22:40] [info] 帐号(xxxxxx)登录成功
[17/11/16 21:22:40] [info] 更新个人信息…
[17/11/16 21:22:40] [info] 更新好友信息…
[17/11/16 21:22:40] [info] 更新好友扩展信息…
[17/11/16 21:22:43] [info] 更新群列表信息…
[17/11/16 21:22:43] [info] 更新群列表扩展信息…
[17/11/16 21:22:43] [info] 更新讨论组列表信息…
[17/11/16 21:22:43] [info] 开始接收消息…
好了,看到上述信息说明之前的安装没问题。第一次登录需要扫码。二维码在 /tmp
目录下,有个 mojo_webqq_qrcode_default.png
的文件,把那个文件下载下来,用手机扫码即可登录。
接下来开始配置群管理功能。打开刚刚的 qq.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 => 6, warn_message => '@%s 警告, 您发图过多,可能会被禁言或踢出本群', shutup_limit => 8, kick_limit => 10, }, keyword_limit => { # 关键词屏蔽,可以加上禁言等选项,配置同上。 period=> 600, keyword=>[qw(fuck 傻逼 你妹 滚)], warn_limit=>3, shutup_limit=>5, #kick_limit=>undef, }, }); $client->run();
简单的做个说明。主要是在 $client->run();
前面加入插件 GroupManage
,也就是群管理插件。注意 $client->run();
必须放在最后。把上面的群号等信息修改成你自己管理的群,然后统计频率、禁言时间等自己设置即可。保存文件,然后运行即可。
还有个插科打诨的功能,其实是一个叫作 SmartReply
的插件。可以通过下面方式开启:
$client->load("SmartReply",data=>{ apikey => '4c53b48522ac4efdfe5dfb4f6149ae51', # 可选,最好自己去 http://www.tuling123.com 注册一个。 allow_group => ["老唐交流群"], #可选,允许插件的群,可以是群名称或群号码 ban_group => ["私人群",123456], #可选,禁用该插件的群,可以是群名称或群号码 ban_user => ["坏蛋",123456], #可选,禁用该插件的用户,可以是用户的显示名称或qq号码 notice_reply => ["对不起,请不要这么频繁的艾特我","对不起,您的艾特次数太多"], #可选,提醒时用语 notice_limit => 8 , #可选,达到该次数提醒对话次数太多,提醒语来自默认或 notice_reply warn_limit => 10, #可选,达到该次数,会被警告 ban_limit => 12, #可选,达到该次数会被列入黑名单不再进行回复 ban_time => 1200,#可选,拉入黑名单时间,默认1200秒 period => 600, #可选,限制周期,单位 秒 is_need_at => 1, #默认是1 是否需要艾特才触发回复 keyword => [qw(小灰 小红 小猪)], #触发智能回复的关键字,使用时请设置is_need_at=>0 });
除了上面的插件,还有一些可选插件。比如“子曰”(随机回复论语),比如查询股票,翻译等。有需要的可以自行开通。最详细的配置,请前往参考文献中的文档页面。
最后附上一个我的配置文件供参考:
#!/usr/bin/env perl use Mojo::Webqq; my $client = Mojo::Webqq->new(); $client->load("ShowMsg"); $client->load("SmartReply",data=>{ apikey => '<请用你自己的apikey替换>', allow_group => ["123456789","987654321"], #可选,允许插件的群,可以是群名称或群号码 notice_reply => ["对不起,请不要这么频繁的艾特我","对不起,您的艾特次数太多"], #可选,提醒时用语 notice_limit => 8 , #可选,达到该次数提醒对话次数太多,提醒语来自默认或 notice_reply warn_limit => 10, #可选,达到该次数,会被警告 ban_limit => 12, #可选,达到该次数会被列入黑名单不再进行回复 ban_time => 1200,#可选,拉入黑名单时间,默认1200秒 period => 600, #可选,限制周期,单位 秒 is_need_at => 1, #默认是1 是否需要艾特才触发回复 keyword => [qw(小灰 小红 小猪)], #触发智能回复的关键字,使用时请设置is_need_at=>0 }); $client->load("GroupManage",data=>{ allow_group => ["123456789","987654321"], #可选,允许插件的群,可以是群名称或群号码 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 => 6, warn_message => '@%s 警告, 您发图过多,可能会被禁言或踢出本群', shutup_limit => 8, # kick_limit => 10, }, keyword_limit => { # 敏感词禁言 period => 600, # 统计周期,单位是秒 keyword =>[qw(你的敏感词 你的敏感词2)], warn_limit =>1, # 第一次进行警告 warn_message => '@%s 警告:注意措辞,及时撤回,请大声朗读并背诵群公告', #警告内容 shutup_limit =>2, # 第二次直接禁言 shutup_time => 18000, # 禁言时间,单位也是秒 #kick_limit=>undef, # 如果想直接踢人,可以设置这个,否则建议默认 }, }); $client->load("StockInfo"); # 开启查询股票功能 $client->load("MobileInfo"); # 开启查询手机归属地功能 $client->load("Translation"); # 开启翻译功能 $client->load("ZiYue"); # 开启论语功能 $client->run();