搭建自定义Mirai机器人

周末本来想继续学Vue来着,这不又搞这个了,唉,这计划赶不上变化啊。

参考文档

  1. mamoe/mirai: 高效率 QQ 机器人支持库
  2. Gradle 下载的依赖jar包在哪? - 简书
  3. 基于MIRAI的QQ机器人 - 知乎
  4. IntelliJ IDEA 2021.3高版本配合ja-netfilter永久破解激活方法详细图文教程 - lzsCxb - 博客园
  5. 「Java」基于Mirai的qq机器人开发踩坑笔记(其一)_TioYae的博客-CSDN博客
  6. 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站直播相关推荐

  1. 基于Nonebot2搭建QQ机器人(一)机器人环境配置

    目录 一.Nonebot2介绍 二.Nonebot2安装 1.bot.py文件的配置 2..env文件的配置 3.env.dev文件配置 4.env.pord配置 三.go-cqhttp介绍 四.go ...

  2. PHP开发基于Mirai的QQ机器人

    博客和更新地址:PHP开发基于Mirai的QQ机器人 前言 在完成配置开源安卓QQ协议库Mirai后,便可使用已有开源项目来部署自己的QQ机器人,但自行开发显然更符合需求.借助mirai-api-ht ...

  3. 「Java」基于Mirai的qq机器人开发踩坑笔记(其一)

    目录 0. 前置操作 I. 安装MCL II. MCL自动登录配置 III. 安装IDEA插件 1. 新建Mirai项目 2. 编写主类 3. 添加外部依赖 4. IDEA运行 5. 插件打包 6. ...

  4. 「Java」基于Mirai的qq机器人开发踩坑笔记(其二)

    目录 0. 配置机器人 1. onLoad方法 2. onEnable方法 3. 消息属性 4. 消息监听 I. 好友消息 II. 群聊消息 III. 无差别消息 5. 发送消息 I. 文本消息 II ...

  5. PHP开发基于Mirai的QQ机器人(一)

    基础环境的搭建 (一) 本文简介 本文讲解高效率QQ机器人框架Mirai. 本文发布于 Mirai V2 由于QQ机器人常被部署在服务器,所以我只讲解 Linux 的部署方式. 本文针对PHP开发者. ...

  6. 基于Nonebot2搭建QQ机器人(二):插件使用

    文章目录 Nonebot2创建插件 1. 插件简介 1.1 模块插件(单文件形式) 1.2 包插件(文件夹形式) 1.3 创建插件 2. 加载插件 2.1 直接加载 2.2 跨域加载 3. 插件配置 ...

  7. 用Nonebot2搭建QQ机器人(一):我的学习经历(一)

    1.NoneBot2的概述: NoneBot2 是一个现代.跨平台.可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持.然后剩下的 ...

  8. 第一章:基于 SpringBoot 快速搭建QQ机器人,并监听群事件

    第一章:基于 SpringBoot 快速搭建QQ机器人 前言:知识与储备 这个QQ机器人能干什么? 第一步:搭建Maven项目环境 第二步:编写pom文件 第三步:编写启动类 第四步:创建配置文件 第 ...

  9. 龙芯平台python答案_使用 go-cqhttp 在龙芯和其他平台搭建qq机器人

    写在前面 企鹅干的所有事情大家都非常清楚,也没必要多说了. 当无产阶级不再思考资产阶级本身的合理性,而将反对的目标局限于某几个资本家的时候,说明资本主义已经成功了. CoolQ已经停止服务,所有疫情期 ...

最新文章

  1. python 图片打印文章总结
  2. Python3算法基础练习:编程100例(6 ~ 10)
  3. RUBY ON RAILS 插件收录: CACHE:Sweeper Generator
  4. mui + vue 模板
  5. 欢乐纪中某B组赛【2019.1.18】
  6. 基本语法和数组(二维,多维,交错数组)
  7. IAI OpenLab工业人工智能开放实验室白皮书(一)
  8. Android 系统(64)---Android中m、mm、mmm、mma、mmma的区别
  9. 【Alpha】“北航社团帮”小程序v1.0发布声明
  10. CRC32的C语言源代码
  11. 网络工程师考试知识点[必考知识点]--必看
  12. python随机生成4位验证码并判断是否正确_python生成4位验证码
  13. 微软技术大会-无人机为中国电信巡航基站
  14. Hie with the Pie(Floyd 状压DP)
  15. 自媒体平台:大鱼计划,20亿大鱼平台奖励金如何获取?
  16. Anchor Based和Anchor Free的相爱相杀与ATSS的诞生
  17. 教你怎么制作高大上的三维热力图
  18. VLAN Aggregation(VLAN 聚合,也称Super VLAN)
  19. 《推荐系统实践》 第七章 推荐系统实例 读书笔记
  20. idea git commit之后,想撤销commit

热门文章

  1. 2021-07-11-gdF103替换st103
  2. 鲍岳桥 | 52 岁还在熬夜写代码
  3. 2022年R2移动式压力容器充装最新解析及R2移动式压力容器充装证考试
  4. 被裁的38岁互联网人:10年赔偿18万、半年花光、他打算送快递
  5. 中标麒麟Linux服务器5.0(mips64el)安装QT开发环境
  6. unicode 编码在线转换工具
  7. 修改linux系统EDT时间为CST时间
  8. ubuntu 20.4安装vmware tools 显示没有足够空间提取
  9. 渗透测试之信息搜集专题
  10. 数字电视技术英文专业词汇释义