基于Mirai搭建QQ机器人监控B站直播
搭建自定义Mirai机器人
周末本来想继续学Vue来着,这不又搞这个了,唉,这计划赶不上变化啊。
参考文档
- mamoe/mirai: 高效率 QQ 机器人支持库
- Gradle 下载的依赖jar包在哪? - 简书
- 基于MIRAI的QQ机器人 - 知乎
- IntelliJ IDEA 2021.3高版本配合ja-netfilter永久破解激活方法详细图文教程 - lzsCxb - 博客园
- 「Java」基于Mirai的qq机器人开发踩坑笔记(其一)_TioYae的博客-CSDN博客
- no acceptable C compiler found in $PATH_JAVA-LPF的博客-CSDN博客
mirai的文档还是很详细的,直接查看用户手册
一、配置Mirai
以下所有的配置,都是使用命令行的,图形界面会造成过多的内存消耗。
不管windows或者linux,都是自己去Github下载mcl-installer。
windows
然后创建一个单独的文件夹,把下载器放进去。
双击运行,根据你的需求进行相应的选择。像我本身就有Java环境,就不需要再进行安装了,我试了安装一个新版jdk,也是可以的。
之后,本地会将mirai的jar包下载下来。直接执行代码运行
java -jar mcl.jar
又会进行一波核心插件之类的下载,直到提示mirai-console started successfully。
基本的命令,控制台也提示了,像autoLogin, help, login, logout, permission, status, stop。
执行命令进行登录
login qq password
可能会弹出验证码,不弹更好,弹出来之后,直接浏览器打开抓包拿到ticket,然后输入到ticket框回车即可。
之后,或许还会弹出设备锁验证,这个直接浏览器打开,手机扫码授权后,关闭窗口即可进行最后一步登录了。
linux
虽然mirai的安装器上面提示可以使用java8,其实已经不支持了。如果想要使用java8趁早打消这个念头吧。
手动安装jdk,这个就直接创建一个脚本
vi openJdk11.sh
添加内容后保存
#!/user/bin/env bash
set -eyum -y install java-11-openjdk java-11-openjdk-develcat > /etc/profile.d/java11.sh <<EOF
export JAVA_HOME=\$(dirname \$(dirname \$(readlink \$(readlink \$(which javac)))))
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar
EOFsource /etc/profile.d/java11.shjava -version
javac -versionecho $JAVA_HOME
授权执行 或者不授权执行,任选一种即可。
# 授权后直接执行脚本
chmod 744 openJdk11.sh
./openJdk11.sh# 不授权执行
sh openJdk11.sh# 查看安装后的java版本
java -version
下载mirai安装器,linux就不多说了,windows的玩过,linux也就这个流程。
wget https://github.com/iTXTech/mcl-installer/releases/download/v1.0.4/mcl-installer-1.0.4-linux-amd64# 查看是否有execute权限
ll# 进行授权
chown -R root mcl-installer-1.0.4-linux-amd64
chmod 744 mcl-installer-1.0.4-linux-amd64# 执行安装
./mcl-installer-1.0.4-linux-amd64
结果此时报错了。
[root@localhost ~]# ./mcl-installer-1.0.4-linux-amd64
./mcl-installer-1.0.4-linux-amd64: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by ./mcl-installer-1.0.4-linux-amd64)
./mcl-installer-1.0.4-linux-amd64: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by ./mcl-installer-1.0.4-linux-amd64)
./mcl-installer-1.0.4-linux-amd64: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./mcl-installer-1.0.4-linux-amd64)
./mcl-installer-1.0.4-linux-amd64: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by ./mcl-installer-1.0.4-linux-amd64)
这个官方有回答,需要自己进行编译。进行编译,首先要看自己有没有c环境
gcc -v# 如果没有,就安装c环境
yum -y install gcc-c++
考虑到后面步骤比较麻烦,直接将windows已经下好的mirai打包丢上去,直接就能执行。这个的好处是,还能带着cookie,不用进行二次认证。
直接启动
nohup java -jar mcl.jar >bot.log 2>&1 &
关闭命令
[root@iZp62wy25rtcetZ qqbot]# ps -ef|grep mcl.jar
root 2440 2255 2 18:59 pts/1 00:00:11 java -jar mcl.jar
root 2558 2255 0 19:06 pts/1 00:00:00 grep --color=auto mcl.jar
[root@iZp62wy25rtcetZ qqbot]# kill -9 2440
在Linux上,后台启动会导致input服务无法使用,会报错,这个无所谓了。
反正大致的流程就是这样了。
二、开发定制插件
开发插件
因为开发Mirai插件的配置和依赖我们也不知道,为了方便开发,他们也提供了MiraiConsole这个插件,便于开发的。但是只支持最新版Idea。破解过程,参考最上面的链接。
插件整好之后,就可以直接创建项目了
下面展示一个小样。
public final class Monitorbili extends JavaPlugin {public static final Monitorbili INSTANCE = new Monitorbili();public static boolean flag=false;private Monitorbili() {super(new JvmPluginDescriptionBuilder("top.meethigher.monitorbili.monitorbili", "1.0").name("monitorbili").author("meethigher").build());}@Overridepublic void onEnable() {getLogger().info("直播监控插件加载完毕!");createTask();GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, event ->{Member sender = event.getSender();MessageChain message = event.getMessage();SingleMessage singleMessage = message.get(1);if(singleMessage.toString().contains("看直播")) {event.getGroup().sendMessage("Avavaava,今天也要轻松快乐看直播");}});}
}
像我这边用到了http,之前写的都是基于SpringBoot的Http,所以对这种项目来说,太臃肿了,这里就推荐使用Hutool。
由于这是一个Kotlin项目所以引用依赖时,需要用Gradle(Kotlin格式),在build.gradle.kts,kts表示kotlin script。
dependencies {// https://mvnrepository.com/artifact/cn.hutool/hutool-allimplementation("cn.hutool:hutool-all:5.8.0.M2")
}
如果插件编写完毕,想要进行单元测试,可以直接运行RunTerminal.kt。
上面是被动的获取监听到消息的机器人,让机器人回复消息。
如果想要主动的发送消息,这么玩。具体的也可以仔细阅读文档
Bot bot = Bot.findInstance(111111);
if (bot == null) return;
Group group = bot.getGroup(111111);
if (group == null) return;
部署插件
idea右侧找到gradle,找到jar,然后双击就能打包了。
最后输出的jar包就是在项目的根目录下的build/libs下面,最后将该jar包移动到mirai机器人根目录的plugins下面,重新运行查看到直播监控插件加载完毕表示成功。
三、注意事项
顶号问题
像手机与pad或者电脑被顶号,会把机器人也顶下去,为了能保持所有设备同时在线,自动登录时,配置为手表,如下
accounts: - # 账号, 现只支持 QQ 数字账号account: 257636396password: # 密码种类, 可选 PLAIN 或 MD5kind: PLAIN# 密码内容, PLAIN 时为密码文本, MD5 时为 16 进制value: fjldajdlfajlfja# 账号配置. 可用配置列表 (注意大小写):# "protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH" /"MAC" / "IPAD"# "device": "device.json"# "enable": trueconfiguration: protocol: ANDROID_WATCH
jar包问题
像我在上面引用了hutool工具类,但是,我部署到服务器后,启动后,定时任务一直没跑。直到我把定时任务线程池换成了Timer,才发现报错是因为hutool的包不存在。
private void createTask() {//Timer timer = new Timer();//timer.scheduleAtFixedRate(new MonitorLiveRunnable(), 1000L, 1000L);/*有错不会丢出*/ScheduledExecutorService scheduledExecutorService = new ExecutorConfig().scheduledExecutorService();scheduledExecutorService.scheduleAtFixedRate(new MonitorLiveRunnable(), 5L, 60L, TimeUnit.SECONDS);
}
解决办法也很简单,直接将所需要的jar包丢到,mirai的plugin下面即可。
当然了,gradle打包时,将依赖包打进去也可以,我懒得搞了。
最后,放上一张机器人运行图。
基于Mirai搭建QQ机器人监控B站直播相关推荐
- 基于Nonebot2搭建QQ机器人(一)机器人环境配置
目录 一.Nonebot2介绍 二.Nonebot2安装 1.bot.py文件的配置 2..env文件的配置 3.env.dev文件配置 4.env.pord配置 三.go-cqhttp介绍 四.go ...
- PHP开发基于Mirai的QQ机器人
博客和更新地址:PHP开发基于Mirai的QQ机器人 前言 在完成配置开源安卓QQ协议库Mirai后,便可使用已有开源项目来部署自己的QQ机器人,但自行开发显然更符合需求.借助mirai-api-ht ...
- 「Java」基于Mirai的qq机器人开发踩坑笔记(其一)
目录 0. 前置操作 I. 安装MCL II. MCL自动登录配置 III. 安装IDEA插件 1. 新建Mirai项目 2. 编写主类 3. 添加外部依赖 4. IDEA运行 5. 插件打包 6. ...
- 「Java」基于Mirai的qq机器人开发踩坑笔记(其二)
目录 0. 配置机器人 1. onLoad方法 2. onEnable方法 3. 消息属性 4. 消息监听 I. 好友消息 II. 群聊消息 III. 无差别消息 5. 发送消息 I. 文本消息 II ...
- PHP开发基于Mirai的QQ机器人(一)
基础环境的搭建 (一) 本文简介 本文讲解高效率QQ机器人框架Mirai. 本文发布于 Mirai V2 由于QQ机器人常被部署在服务器,所以我只讲解 Linux 的部署方式. 本文针对PHP开发者. ...
- 基于Nonebot2搭建QQ机器人(二):插件使用
文章目录 Nonebot2创建插件 1. 插件简介 1.1 模块插件(单文件形式) 1.2 包插件(文件夹形式) 1.3 创建插件 2. 加载插件 2.1 直接加载 2.2 跨域加载 3. 插件配置 ...
- 用Nonebot2搭建QQ机器人(一):我的学习经历(一)
1.NoneBot2的概述: NoneBot2 是一个现代.跨平台.可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持.然后剩下的 ...
- 第一章:基于 SpringBoot 快速搭建QQ机器人,并监听群事件
第一章:基于 SpringBoot 快速搭建QQ机器人 前言:知识与储备 这个QQ机器人能干什么? 第一步:搭建Maven项目环境 第二步:编写pom文件 第三步:编写启动类 第四步:创建配置文件 第 ...
- 龙芯平台python答案_使用 go-cqhttp 在龙芯和其他平台搭建qq机器人
写在前面 企鹅干的所有事情大家都非常清楚,也没必要多说了. 当无产阶级不再思考资产阶级本身的合理性,而将反对的目标局限于某几个资本家的时候,说明资本主义已经成功了. CoolQ已经停止服务,所有疫情期 ...
最新文章
- python 图片打印文章总结
- Python3算法基础练习:编程100例(6 ~ 10)
- RUBY ON RAILS 插件收录: CACHE:Sweeper Generator
- mui + vue 模板
- 欢乐纪中某B组赛【2019.1.18】
- 基本语法和数组(二维,多维,交错数组)
- IAI OpenLab工业人工智能开放实验室白皮书(一)
- Android 系统(64)---Android中m、mm、mmm、mma、mmma的区别
- 【Alpha】“北航社团帮”小程序v1.0发布声明
- CRC32的C语言源代码
- 网络工程师考试知识点[必考知识点]--必看
- python随机生成4位验证码并判断是否正确_python生成4位验证码
- 微软技术大会-无人机为中国电信巡航基站
- Hie with the Pie(Floyd 状压DP)
- 自媒体平台:大鱼计划,20亿大鱼平台奖励金如何获取?
- Anchor Based和Anchor Free的相爱相杀与ATSS的诞生
- 教你怎么制作高大上的三维热力图
- VLAN Aggregation(VLAN 聚合,也称Super VLAN)
- 《推荐系统实践》 第七章 推荐系统实例 读书笔记
- idea git commit之后,想撤销commit