Java实现QQ机器人教程

要想实现Java版的QQ机器人,其实并不难,今天就给大家分享一下使用Mirai框架制作简单的QQ机器人。

1.拉取项目demo

首先,Miari是一个开源的框架,我们可以从GitHub上拉取项目进行查看,但是GitHub需要使用加速插件才能很好的访问,所以在这里我们可以选择使用Gitee开源平台。

simbot-mirai-demo: 原生simbot框架的mirai组件demo。 (gitee.com)

我们通过这个链接,对项目进行拉取。

在这里插入图片描述

可以直接复制https中的链接,也可以下载zip压缩文件,两种方式都可以,但是需要时间加载依赖。

拉取成功之后的项目目录是这样的。

在这里插入图片描述

首先我们需要阅读一下README.md文件,使用之前需要了解一些基本的注意事项。

在这里插入图片描述

第一步克隆项目显然我们已经完成了。所以我们接下来修改配置文件即可。

2.修改配置文件

我们找到resource目录下的.yml文件,进行测试QQ机器人账号密码的填写,如下图:

在这里插入图片描述

在这里插入图片描述

前面是账号,后面是密码。中间需要使用英文冒号隔开。

3.滑动窗口验证

接下来我们可以启动项目,但是第一次使用该框架的账号需要进行Mirai滑块验证,如果启动失败的话,我们需要配置一些项目的JVM参数。

详细教程可以查看mirai-login-solver-selenium。

simbot-mirai-demo: 原生simbot框架的mirai组件demo。 (gitee.com)

(1)配置JVM参数

我们需要在JVM参数上配置开启桌面滑动验证,如下

-Dmirai.slider.captcha.supported

在这里插入图片描述

但是这个验证一个账号只需要验证一次即可,所以完全不用因为过于麻烦而不想继续实现。

(2)启动项目

在这里插入图片描述

控制台输出日志之后,然后桌面上就会弹出一个验证框,上面给了一个url。

在这里插入图片描述

看到提示“需要滑动验证码,完成后请输入ticket”。

我们可以复制一下url看一下是什么

在这里插入图片描述

原来就是一个平常登录使用的滑动验证,但是现在看来我们显然是不可能这样滑动就可以完成了,我们需要获取ticket。

(3)获取ticket

获取ticket有两种方法,一种是已经失效的使用另外一个项目进行通过,另外一种是通过手机连接电脑进行验证,我这里使用的是第二种。我们也需要做一些准备工作。具体可以看下面的教程。

GitHub - project-mirai/mirai-login-solver-selenium: SliderCaptcha solver

①让手机和电脑连接

首先,需要手机打开开发者模式,并且开启USB调试。

开启之后手机需要打开浏览器页面,最好是谷歌浏览器。但是因为谷歌浏览器上网需要外网,如果不想麻烦的话,搜索引擎我们可以使用百度。

如下:

在这里插入图片描述

②开启调试模式

然后在手机和电脑都打开 Chrome,并使电脑成功链接上手机 Chrome。

因为上面说到了谷歌浏览器需要使用外网,如果没有外网的话,会出现404空白页面。

所以这里我们使用Edge浏览器。

在手机的开发者模式和USB调试都打开的情况下,我们需要打开edge浏览器访问edge://inspect/#devices

edge://inspect/#devices

刚开始访问的时候是这样的

在这里插入图片描述

我们稍等一会,打开浏览器访问edge://inspect/#devices的同时,手机上会弹出是否开启USB调试,这里我们选择允许。

在这里插入图片描述

然后过一会就会出现调试页面

在这里插入图片描述

③进行滑动验证

我们只需要点击inspect即可,打开调试页面。

在这里插入图片描述

然后回到我们当时弹出的那个滑动验证的窗口,复制一长串的url,复制到模拟页面的手机的url进行访问,粘贴后回车即可。
在这里插入图片描述

接下来就会出现滑动验证的页面,此时电脑页面是同步手机的。

在这里插入图片描述

我们进行验证。

验证完成之后发送请求,右边控制台网络会出现一系列的请求监听记录。我们需要找到cap_union_new_verify,就可以找到ticket,注意分号之间的字符串才是ticket,我们复制后进行验证。

在这里插入图片描述

我们输入复制后的ticket,然后回车。

在这里插入图片描述

这时候就可以完成mirai登录滑动验证了。

回到项目我们可以看到控制台打印出我们的账号信息。

在这里插入图片描述

至此,我们mirai的基本配置就已经完成。

4.简单测试

我们配置完成之后就可以对我们的机器人账号的私聊、群聊等消息进行配置,这里只做一个简单的测试,具体的功能大家可以去官方文档进行阅读与实现。

@Beans
@Slf4j
public class MyPrivateListener {


    /**
     * 复读私聊消息  也可以使用@Listen(PrivateMsg.class)
     *
     *        其他的方法
     *         String m1 = msg.getMsg();  发送的消息,如果表情则会转化为字符,如 你好[CAT:face,id=212]
     *         String m2 = msg.getText();  发送的消息,如果是表情则会加在后面,不会转化为字符串
     *         MessageContent mm3 = msg.getMsgContent(); 消息封装类
     *
     *         //复读消息,发送一条和接收的消息一样的消息
     *          sender.sendPrivateMsg(msg,msg.getMsgContent());
     *
     *          //复读消息中的图片,可以是多个,只复读图片,不包含中间的文字消息
     *          MessageContent msgContent = msg.getMsgContent();
     *         List<Neko> image = msgContent.getCats("image");
     *         String join = String.join("", image);
     *         sender.sendPrivateMsg(msg,join);
     * @param msg
     * @param sender
     */
    @OnPrivate
    public void repetition(PrivateMsg msg, Sender sender) {
    	//复读一条接收的信息并且进行发送
        sender.sendPrivateMsg(msg,msg.getMsgContent());
    }
}

启动项目进行测试。
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐