文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP开发基于Mirai的QQ机器人(二)

2023-09-04 06:47

关注

本文讲解高效率QQ机器人框架Mirai
本文发布于 Mirai V2 由于QQ机器人常被部署在服务器,所以我只讲解 Linux 的部署方式。
本文针对PHP开发者。会详细介绍如何用Mirai + PHP 的组合,从最基础的对QQ消息进行回复到更多更高级的应用。
本教程过长,所以会分章节发布,发布完后会合并在章节(一)中。
本教程分为:

  1. 安装必要软件
  2. 配置环境 并成功的回复QQ消息
  3. 写一个属于自己的插件

一切开发旨在学习,请勿用于非法用途

本文仅仅是介绍一下Mirai框架的使用,主要目的是交流学习。
Mirai 仓库地址(GitHub): https://github.com/mamoe/mirai

本文是免费的,禁止对本文收费或变相收费,转载需标明出处,禁止一切商业用途。

在 一 中,我们已经成功安装好了各种依赖。在 二 中,我们将要来配置好各个依赖。
如果你没有看 一 。 那么我建议你去看一并且严格按照我一中的教程来操作。
地址 : https://blog.csdn.net/apple_53792700/article/details/128425387
如果你漏了一步,可能后面的文章你将无法看懂!

在 mirai 中登陆QQ

在mirai的安装目录下运行 mcl 。
请添加图片描述
然后你可以看到有个很大的mirai标志,进入程序以后使用 login 账号 密码命令来登陆QQ。
由于服务器与你常登陆的网络环境不同,设备也不相同。所以一般会有各种验证。

滑动验证 :

如同你看到以下命令的话,那么你可能进入了滑动验证阶段;
请添加图片描述
此时你需要快速的进行以下操作:

1. 打开链接 并 打开控制台窗口

你需要在浏览器中打开这个链接,并同时打开控制台窗口(快捷键F12),并且将窗口调到 网络
结果如下:
请添加图片描述

2. 通过验证并获得 Ticket

使用鼠标通过滑动验证码后,你控制台窗口的网络中应该会有几个网络请求。我们双击其中一条请求,就可以看到会有一个新的视图。里面有预览,负载等。我们找到预览。然后找到预览里面有ticket的请求。把 ticket 复制下来。
请添加图片描述

3.利用获得的 Ticket 登陆 Mirai 并完成手机验证码验证

请添加图片描述
将获取倒的 Ticket 粘贴进去。将会进入手机验证码阶段。输入yes 后将手机验证码填入即可完成登陆。

4.登陆后

请添加图片描述
如果你登陆成功就可以看到上面的信息。Bot login successful。
现在你已经尝试登陆成功了。只要登陆信息还在,那么第二次登陆就不会那么麻烦。
输入 exit 命令关闭 mirai。

配置 mirai-api-http

进入mirai 的安装目录下 config 文件夹下应该有一个名为 net.mamoe.mirai-api-http 的文件夹。只要带 mirai-api-http 的文件夹理应就是 属于他的。在这个文件夹内应该有一个名为 setting.yml 文件。这个是 mirai-api-http 的配置文件。如果没有的话请自行创建。
然后按照下面的格式来配置这个文件。

## 配置文件中的值,全为默认值## 启用的 adapter, 内置有 http, ws, reverse-ws, webhook## 我们启用 http 与 webhookadapters:  - http  - webhook## 是否开启认证流程, 若为 true 则建立连接时需要验证 verifyKey## 建议公网连接时开启enableVerify: trueverifyKey: 123123123## verifyKey 用于验证身份,就和密码一样。你应该去设置好他。## 开启一些调式信息debug: false## 是否开启单 session 模式, 若为 true,则自动创建 session 绑定 console 中登录的 bot## 开启后,接口中任何 sessionKey 不需要传递参数## 若 console 中有多个 bot 登录,则行为未定义## 确保 console 中只有一个 bot 登陆时启用singleMode: false## 历史消息的缓存大小## 同时,也是 http adapter 的消息队列容量cacheSize: 4096## adapter 的单独配置,键名与 adapters 项配置相同adapterSettings:  ## 详情看 http adapter 使用说明 配置  http:  ## host 0.0.0.0 代表任何地址都可以调用 mirai api 端口可以自己设置,我设置的是60    host: 0.0.0.0    port: 60    cors: ["*"]      webhook:    ## 回调(上报)地址    destinations:     ## 这个地址填你 miraiez 的地址,注意不要漏掉了 http 和 webhook.php    - 'http://aaa.bbb.com/webhook.php'    ## 额外自定义请求头    extraHeaders:    ## 这个用于 身份验证 也就类似于 调用 miraiez 的密码。      Authorization: '12345678'

配置完后回到 mirai 目录。启动 mirai 。
在这里插入图片描述
如果你看到用红色框框框起来的信息,那么代表你mirai-api-http启动成功了。
现在我们退出去使用 MiraiTravel 框架 。

配置 MiraiTravel

我们 CD 到 MiraiTravel 的安装目录下。使用命令 php MiraiTravel.php 即可打开 MiraiTravel 的控制台窗口。
在这里插入图片描述
在这里我们使用 help 命令可以看到 MiraiTravel 命令集。
在这里我们需要使用 config 命令来配置一些基本项。
使用 config help 你可以看到你可以配置的项目。
在这里插入图片描述

我们需要把 httpApi 设置成 mirai-api-http 的地址。
verifyKey 设置的和 mirai-api-http 内一样即可。

使用命令

config httpApi 123123

即可把 httpApi 设置成 123123
verifyKey 同理

(在script文件夹下已经有一个示例脚本 Q2771717841 。
需要的可以看看。)
在 script 文件夹下新建文件 Q【你的QQ机器人QQ号】.php
内容为 : https://github.com/MR-XieXuan/MiraiTravel/blob/main/docs/QQBot.md
中的模板内容 , 我给你们复制出来了 :

namespace MiraiTravel\QQObj\Script;use MiraiTravel\LogSystem\LogSystem;use MiraiTravel\MessageChain\MessageChain;use MiraiTravel\QQObj\QQObj;class Q2771717841 extends QQObj{    const HTTP_API = "http://localhost:60"; //http api    const VERIFY_KEY = "verifyKey"; //http api verifyKey    const AUTHORIZATION = ""; //webhook Authorization        function init()    {        // 打开 easyMirai 组件与 webhook 组件        $this->open_component("easyMirai", "V0.1.1");        $this->open_component("webhook", "V0.1.1");    }        function webhook_friend_message($webhookMessage)    {        $messageChain = new MessageChain();        $messageChain->push_plain("Hello MiraiTravel!");        $this->reply_message($messageChain->get_message_chain());    }}

把里面的 2771717841 改成 你的机器人QQ即可。
这个示例程序的功能就是QQ好友给机器人发送任何消息都会回复 Hello MiraiTravel。
由于 mirai-api-http 的 webhook 适配器有一些BUG。
所以你还需要将 webhoolkk.php 中 $webhookBeUsed = false; 注释掉。如图所示:
做完这些事情后,你只需要在 MiraiTravel 的控制台中打开你的 QQ机器人。
你写的脚本就会被 MiraiTravel 识别到并载入了。

进入 MiraiTravel 控制台后输入命令 :

config bot open 【你的机器人QQ】

这个时候你的MiraiTravel就已经启动完成了。
你用你加了机器人的QQ向机器人发送任何消息机器人都会回复你 Hello MiraiTravel!
在这里插入图片描述


✍️本文作者为 > 【谢玄.】 Mr-XieXuan < 于 2022/12/27/3:00 发布于 CSDN 。

📧E-mail: [ Mr_Xie_@outlook.com ]
⌨️GitHub: [ https://github.com/MR-XieXuan }
🔍个人私站: [ https://main.mrxie.xyz/ ]

来源地址:https://blog.csdn.net/apple_53792700/article/details/128740707

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯