Ubuntu 下搭建 mirai + mirai-api-http
Ubuntu 下搭建 mirai + mirai-api-http
mirai
提供 QQ Android 协议支持的高效率机器人库
使用 iTXTech MCL Installer 获取 mcl
新建目录
mkdir mcl
cd mcl根据系统和架构选择对应文件:release
curl -LJO https://github.com/iTXTech/mcl-installer/releases/download/2827601/mcl-installer-2827601-linux-amd64
chmod +x mcl-installer-2827601-linux-amd64
./mcl-installer-2827601-linux-amd64无特殊需求可一路回车,mcl就装好啦
使用 mcl 安装 mirai-api-http
./mcl --update-package net.mamoe:mirai-api-http --channel stable --type plugin测试 http api:
./mcl
login qq号 qq密码如果要求滑块验证请看下一步
手动完成滑动验证
参考自 mirai-login-solver-selenium
退出控制台,在 mirai 运行时中添加 JVM 属性 mirai.slider.captcha.supported 以启用手动验证
修改文件 mcl vim mcl 为如下内容:
#!/usr/bin/env sh
export JAVA_BINARY="/root/mcl/java/bin/java"
$JAVA_BINARY -Dmirai.slider.captcha.supported -jar mcl.jar $*再次打开 mcl 并登录,用有桌面系统的电脑打开验证地址
F12 打开 DevTools,切换运行模式为 Android

切换到 Console,复制 captcha.inject.js 的内容全部复制至 Console 中并运行

复制传回的 ticket 并在 mcl 中输入,流程正确的话就能完成登陆了

验证 api
使用了 python sdk Graia Application
安装:
pip install graia-application-mirai运行 Python 代码:
from graia.broadcast import Broadcast
from graia.application import GraiaMiraiApplication, Session
from graia.application.message.chain import MessageChain
import asyncio
from graia.application.message.elements.internal import Plain
from graia.application.friend import Friend
loop = asyncio.get_event_loop()
bcc = Broadcast(loop=loop)
app = GraiaMiraiApplication(
broadcast=bcc,
connect_info=Session(
host="http://localhost:8080", # 填入 httpapi 服务运行的地址
authKey="0123456789", # 填入在setting.yml中设置的authKey
account=88888888, # 你的机器人的 qq 号
websocket=True # Graia 已经可以根据所配置的消息接收的方式来保证消息接收部分的正常运作.
)
)
@bcc.receiver("FriendMessage")
async def friend_message_listener(message: MessageChain, friend: Friend, app: GraiaMiraiApplication):
msg = message.asDisplay()
if msg.startswith(".help"):
await app.sendFriendMessage(friend, MessageChain(__root__=[Plain(".help\t显示帮助指令\r\n.copy\t复读")]))
elif msg.startswith(".copy "):
msg = msg[6:]
await app.sendFriendMessage(friend, MessageChain(__root__=[Plain(msg)]))
else:
await app.sendFriendMessage(friend, MessageChain(__root__=[Plain("收到!")]))
app.launch_blocking()最后尝试给机器人发消息,收到回复就测试成功了