IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 基于Mirai搭建QQ机器人监控B站直播 -> 正文阅读

[开发工具]基于Mirai搭建QQ机器人监控B站直播

搭建自定义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

{% asset_img 1.jpg mirai下载器 %}

然后创建一个单独的文件夹,把下载器放进去。

{% asset_img 2.jpg %}

双击运行,根据你的需求进行相应的选择。像我本身就有Java环境,就不需要再进行安装了,我试了安装一个新版jdk,也是可以的。

{% asset_img 3.jpg 配置mirai环境 %}

之后,本地会将mirai的jar包下载下来。直接执行代码运行

java -jar mcl.jar

又会进行一波核心插件之类的下载,直到提示mirai-console started successfully。

{% asset_img 4.jpg mirai启动成功 %}

基本的命令,控制台也提示了,像autoLogin, help, login, logout, permission, status, stop。

执行命令进行登录

login qq password

可能会弹出验证码,不弹更好,弹出来之后,直接浏览器打开抓包拿到ticket,然后输入到ticket框回车即可。

之后,或许还会弹出设备锁验证,这个直接浏览器打开,手机扫码授权后,关闭窗口即可进行最后一步登录了。

{% asset_img 5.jpg %}

{% asset_img 6.jpg %}

linux

虽然mirai的安装器上面提示可以使用java8,其实已经不支持了。如果想要使用java8趁早打消这个念头吧。

手动安装jdk,这个就直接创建一个脚本

vi openJdk11.sh

添加内容后保存

#!/user/bin/env bash
set -e

yum -y install java-11-openjdk java-11-openjdk-devel

cat > /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
EOF

source /etc/profile.d/java11.sh

java -version
javac -version

echo $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服务无法使用,会报错,这个无所谓了。

{% asset_img 15.jpg %}

反正大致的流程就是这样了。

二、开发定制插件

开发插件

因为开发Mirai插件的配置和依赖我们也不知道,为了方便开发,他们也提供了MiraiConsole这个插件,便于开发的。但是只支持最新版Idea。破解过程,参考最上面的链接。

插件整好之后,就可以直接创建项目了

{% asset_img 7.jpg %}

{% asset_img 8.jpg %}

{% asset_img 9.jpg %}

{% asset_img 10.jpg %}

下面展示一个小样。

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());
    }

    @Override
    public 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-all
    implementation("cn.hutool:hutool-all:5.8.0.M2")
}

如果插件编写完毕,想要进行单元测试,可以直接运行RunTerminal.kt。

{% asset_img 11.jpg %}

{% asset_img 12.jpg %}

上面是被动的获取监听到消息的机器人,让机器人回复消息。

如果想要主动的发送消息,这么玩。具体的也可以仔细阅读文档

Bot bot = Bot.findInstance(111111);
if (bot == null) return;
Group group = bot.getGroup(111111);
if (group == null) return;

部署插件

idea右侧找到gradle,找到jar,然后双击就能打包了。

{% asset_img 13.jpg %}

最后输出的jar包就是在项目的根目录下的build/libs下面,最后将该jar包移动到mirai机器人根目录的plugins下面,重新运行查看到直播监控插件加载完毕表示成功。

三、注意事项

顶号问题

像手机与pad或者电脑被顶号,会把机器人也顶下去,为了能保持所有设备同时在线,自动登录时,配置为手表,如下

accounts: 
  - # 账号, 现只支持 QQ 数字账号
    account: 257636396
    password: 
      # 密码种类, 可选 PLAIN 或 MD5
      kind: PLAIN
      # 密码内容, PLAIN 时为密码文本, MD5 时为 16 进制
      value: fjldajdlfajlfja
    # 账号配置. 可用配置列表 (注意大小写):
    # "protocol": "ANDROID_PHONE" / "ANDROID_PAD" / "ANDROID_WATCH" /"MAC" / "IPAD"
    # "device": "device.json"
    # "enable": true
    configuration: 
      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打包时,将依赖包打进去也可以,我懒得搞了。

最后,放上一张机器人运行图。

{% asset_img 14.jpg %}

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:58:27  更:2022-04-26 11:59:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 15:01:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码