Python+mirai开发QQ机器⼈起步教程(2021.9.9测试有效)
参考:
本篇⽂章参考了以上博客,并对其中的失效内容和版本匹配问题进⾏了补充修改,实测能够成功运⾏。部分步骤的运⾏截图见该博客,请互相参照阅读。
0. 配置jdk,版本必须为OpenJDK>=11
OracleJDK未经测试,不保证能正常运⾏
1. 下载mirai-console-loader(mcl),版本必须为1.
2.2
mcl命令使⽤⽅法见下⽂档:
2. 添加mirai-api-http(mah)插件,版本必须为1.12.0
cd ./mcl-1.2.2
sh ./mcl --update-package net.mamoe:mirai-api-http --channel stable --type plugin --version 1.12.0
arm嵌入式linux系统开发详解 pdfsh ./mcl --dry-runpython入门教程app
如果⾃动下载出现corrupt报错,可以⼿动下载,并将其放⼊mcl-1.2.2/plugins⽂件夹中
3. 禁⽤mcl的updater脚本,防⽌⾃动升级
sh ./mcl --disable-script updater
4. 检查版本对应
此时,注意检查mcl-1.2.2/config.json⽂件内容应和以下相同,需要特别注意:mirai-console、mirai-console-terminal、mirai-core-all的版本为2.7.*,mirai-api-http的版本为1.12.0,"disabled_scripts": ["updater"] !!
{
"js_optimization_level": -1,
"mirai_repo": "gitee/peratx/mirai-repo/raw/master",
"maven_repo": [
互联网编程培训
"maven.aliyun/repository/public"
],
"packages": [
{
"id": "org.bouncycastle:bcprov-jdk15on",
"channel": "stable",
"version": "1.64",
"type": "libs",
"versionLocked": false
},
{
"id": "org.itxtech:mcl-addon",
"channel": "c122",
"version": "1.2.2",
"type": "plugins",
"versionLocked": false
},
{
"id": "net.mamoe:mirai-console",
"channel": "stable",
"version": "2.7.0",
"type": "libs",
"versionLocked": false
},
{
"id": "net.mamoe:mirai-console-terminal",
"channel": "stable",
"version": "2.7.0",
"type": "libs",
"versionLocked": false
},
{
"id": "net.mamoe:mirai-core-all",
"channel": "stable",
"version": "2.7.0",
"type": "libs",
"versionLocked": false
},
{
update后面接什么
"id": "net.mamoe:mirai-api-http",
"channel": "stable",
"version": "1.12.0",
"type": "plugins",
"versionLocked": false
}
],
"disabled_scripts": [
"updater"
],
"proxy": "",
"log_level": 1,
"script_props": {}
}
检查mcl-1.2.2/libs和mcl-1.2.2/plugins中的jar包存在且与上述⽂件中的版本匹配!!
参考:
5. 配置mah,必须按照1.x的⽂档进⾏配置
修改mcl-1.2.2/config/net.mamoe.l⽂件,可直接复制以下配置
## 该配置为全局配置,对所有Session有效
# 可选,默认值为0.0.0.0
host: '0.0.0.0'
# 可选,默认值为8080
port: 8080
# 可选,默认由插件第⼀次启动时随机⽣成,建议⼿动指定
authKey: 1234567890
# 可选,缓存⼤⼩,默认4096.缓存过⼩会导致引⽤回复与撤回消息失败
cacheSize: 4096
# 可选,是否开启websocket,默认关闭,建议通过Session范围的配置设置
enableWebsocket: true
# 可选,配置CORS跨域,默认为*,即允许所有域名
cors:
- '*'
## 消息上报
report:
# 功能总开关
enable: false
# 消息上报
groupMessage:
report: false
# 好友消息上报
friendMessage:
report: false
# 临时消息上报
tempMessage:
report: false
# 事件上报
eventMessage:
report: false
# 上报URL
destinations: []
# 上报时的额外Header
extraHeaders: {}
## ⼼跳
heartbeat:
# 功能总开关
enable: false
# 启动延迟
delay: 1000
# ⼼跳间隔
period: 15000
# ⼼跳上报URL
destinations: []
# 上报时的额外信息
extraBody: {}
# 上报时的额外头
extraHeaders: {}
6. 安装MiraiAndroid
和均⽆法正常⼯作(2021.9.9)!
参考:
github:
下载:
使⽤前环境准备:
在 mirai 运⾏时中添加 JVM 属性 mirai.slider.captcha.supported (添加参数 -Dmirai.slider.captcha.supported) 以确认⼿动完成滑动验证
上⾯的看不懂没关系,直接看下⾯的操作操作步骤:对于 mirai-console-loader, 打开 mcl(Linux)或mcl.bat(Windows), 在 java ..... -jar .... 命令中的 -jar 前加⼊参数 -Dmirai.slider.captcha.supported,Linux修改后的结果如下:
#!/usr/bin/env sh
export JAVA_BINARY=java
$JAVA_BINARY -Dmirai.slider.captcha.supported -jar mcl.jar $*
如果运⾏于 mirai-console, 需要在 plugins 内删除 mirai-login-solver-selenium 插件
如果直接基于 mirai-core 开发, 需要删除 mirai-login-solver-selenium 依赖
使⽤⽅法:
下载之后安装到你的⼿机上,并且完成登录;登录⽅法在主屏幕右上⾓的设置⾃动登录⾥,登录过程中需要验证请在通知栏内点击通知完成验证。
登录成功后到左边菜单内到⾼级功能(⼯具),选择你的账号(选择⼀个bot)之后导出设备⽂件(device.json)发送到电脑,并覆盖电脑版⽂件(Linux下路径为mcl-1.2.2/bots/qq号/device.json)。
再运⾏mcl脚本
cd ./mcl-1.2.2
sh ./mcl
等待mcl开启后输⼊以下命令即可成功登陆:
> login qq号 qq密码
7. 安装graia-application-mirai,注意需要降级版本才能正常运⾏
参考配置:
pip install graia-application-mirai==0.18.4
创建bot.py⽂件,修改bot.py中的host、authKey与mirai-api-http的配置相同,修改account,websocket改为true
from graia.broadcast import Broadcast
from graia.application import GraiaMiraiApplication, Session
from ssage.chain import MessageChain
import asyncio
from ssage.elements.internal import Plain
from graia.application.friend import Friend
loop = _event_loop()
bcc = Broadcast(loop=loop)
app = GraiaMiraiApplication(
broadcast=bcc,
connect_info=Session(
host="localhost:8080", # 填⼊ httpapi 服务运⾏的地址
authKey="1234567890", # 填⼊ authKey
account=****, # 你的机器⼈的 qq 号
websocket=True # Graia 已经可以根据所配置的消息接收的⽅式来保证消息接收部分的正常运作.
)
)
split电影人格@iver("FriendMessage")
async def friend_message_listener(app: GraiaMiraiApplication, friend: Friend):
await app.sendFriendMessage(friend, ate([
Plain("Hello, World!")
]
))
app.launch_blocking()
format什么意思翻译
运⾏bot.py
python bot.py
然后向你的QQ机器⼈,随便发送⼀条消息,如果它回复你Hello, World!,则表⽰运⾏成功

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。