这篇文章主要讲解了“怎么用Python开发QQ机器人”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python开发QQ机器人”吧!
前言
mirai生态

简单来说,mirai生态的核心是Mirai框架,其中包含了mirai-core及mirai-core-api两部分。
其中,前者负责协议相关的内容,而后者负责对外提供操作前者的接口。因此与程序员直接打交道的是mirai-core-api,而mirai-core,对我们是不可见的。
使用mirai-core-api就已经可以开发QQ机器人了,但对萌新来说难度还是太大,于是mirai官方开发组编写了一个QQ机器人程序,mirai-console,它在 mirai 框架提供的基础功能的基础上进行了封装并进一步提供了更方便的开放接口。
有了mirai-console,我们就不用直接去开发mirai的QQ机器人了,而是去开发mirai-console的插件,如下面的模式:


起步
使用 mirai-console-loader 启动 mirai-console
根据上面的介绍,要开发一个mirai的QQ机器人,我们首先需要将mirai-console给运行起来,而要做到这一步,可难。例如你需要准备mirai-core,mirai-console 和 mirai-console-terminal,然后还需要通过一大串指令来启动它。
而官方显然考虑到这一点,为了挽回被这一高难度操作劝退的萌新,官方又推出了mirai-console-loader(简称mcl) —— mirai-console 的官方一键启动器。因此你仅需要下载它即可(第一步说的都不用管0.0)。github仓库位置:mirai-console-loader[2]
下载完成mcl之后,解压、打开cmd、切换到mcl所在目录、运行mcl。如下图:



使用 mirai-login-solver-selenium 处理滑块验证辅助登录

于是我们需要mirai的另一个项目 mirai-login-solver-selenium[3] 来辅助登录
mirai-login-solver-selenium安装步骤 (需要先安装 Chrome 浏览器)
先结束掉之前运行的 mirai-console, 然后在命令行运行如下命令,添加该包
mcl --update-package net.mamoe:mirai-login-solver-selenium --channel nightly --type plugin
1. 查看cmd窗口,找到mcl正在下载的chromedriver是什么版本

2. 然后去chromedriver的另一个镜像源下载,推荐:chromedriver[4]
3. 找到一个版本号相近的即可,例如我就下载 86.0.4240.22

4. 将下载好的文件解压,再重命名成chromedriver-86.0.4240.198.exe,也就是刚刚我们在命令行窗口查看的文件名,一定要跟它想下载的文件名一致
5. 结束之前运行的mcl命令行程序,然后将准备好的chromedriver-86.0.4240.198.exe, 替换到以下目录
6. 重新运行mcl程序,如果一切顺利,就可以继续之前的步骤,输入命令:login 账号 密码 尝试登录。接下来会弹出一个浏览器窗口,你只需要傻瓜式的完成登录验证即可。如果登录成功,以后的每次登录,应该都是不需要再次验证的。
使用 mirai-api-http 增加语言拓展性 (为了能用其他语言来开发)
1. 使用mcl运行mirai-console
2. 使用 mirai-login-solver-selenium 辅助通过滑块验证码,完成登录


1. 下载 open JDK[6],例如我下载如图所示的版本:

2. 解压open JDK, 并放在你认为合适的位置,例如我放在如下图所示的位置:

3. 添加 jdk 所在路径到环境变量:此电脑 ->右键属性 -> 高级系统设置 -> 高级 -> 环境变量, 再按下图操作


通过 graia-application-mirai 使用 python 开发 mirai 机器人
前面的操作,直到该步为止,基本对所有使用除java/kotlin语言的程序员,都是通用的。而后面的操作,仅写给使用python的程序员
graia-application-mirai官方文档[7]
首先对mirai-api-http进行配置,如图:

# file: mcl-1.0.3/config/net.mamoe.mirai.api.http/setting.yml authKey: graia-mirai-api-http-authkey # 你可以自己设定, 这里作为示范 # 可选,缓存大小,默认4096.缓存过小会导致引用回复与撤回消息失败 cacheSize: 4096 enableWebsocket: true # 是否启用 websocket 方式, 若使用 websocket 方式交互会得到更好的性能 host: '0.0.0.0' # httpapi 服务监听的地址, 错误的设置会造成 Graia Application 无法与其交互 port: 8080 # httpapi 服务监听的端口, 错误的设置会造成 Graia Application 无法与其交互
pip install graia-application-mirai
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(looploop=loop) app = GraiaMiraiApplication( broadcast=bcc, connect_info=Session( host="http://localhost:8080", # 填入 httpapi 服务运行的地址 authKey="graia-mirai-api-http-authkey", # 填入 authKey account=5234120587, # 你的机器人的 qq 号 websocket=True # Graia 已经可以根据所配置的消息接收的方式来保证消息接收部分的正常运作. ) ) @bcc.receiver("FriendMessage") async def friend_message_listener(app: GraiaMiraiApplication, friend: Friend): await app.sendFriendMessage(friend, MessageChain.create([ Plain("Hello, World!") ])) app.launch_blocking()
结语
上面的全部操作,不过是使用mirai进行开发QQ机器人的起步教程而已,需要了解更多,还是去阅读官方文档,以学习更多的api。
感谢各位的阅读,以上就是“怎么用Python开发QQ机器人”的内容了,经过本文的学习后,相信大家对怎么用Python开发QQ机器人这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!