本文讲解高效率QQ机器人框架Mirai
。
本文发布于 Mirai V2
由于QQ机器人常被部署在服务器,所以我只讲解 Linux 的部署方式。
本文针对PHP
开发者。会详细介绍如何用Mirai
+ PHP
的组合,从最基础的对QQ消息进行回复到更多更高级的应用。
本教程过长,所以会分章节发布,发布完后会合并在章节(一)中。
本教程分为:
- 安装必要软件
- 配置环境 并成功的回复QQ消息
- 写一个属于自己的插件
一切开发旨在学习,请勿用于非法用途
- mirai 是完全免费且开放源代码的软件,仅供学习和娱乐用途使用
- mirai 不会通过任何方式强制收取费用,或对使用者提出物质条件
- mirai 由整个开源社区维护,并不是属于某个个体的作品,所有贡献者都享有其作品的著作权
本文仅仅是介绍一下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 。
⌨️GitHub: [ https://github.com/MR-XieXuan }
🔍个人私站: [ https://main.mrxie.xyz/ ]
来源地址:https://blog.csdn.net/apple_53792700/article/details/128740707