python基于mirai的QQ机器人

python基于mirai的QQ机器人,第1张

Mirai介绍

Mirai是一款最新的开源QQ机器人框架,用卡特琳语言编写,所以后续如果有需要,我会出Java版教程,如果想要了解更多语言开发,请移步Mirai官方文档,除了卡特琳和Java,其他语言均需要依赖Mirai Http 和Mirai Console开发。

Python使用Mirai

本教程使用的是Graia这个Python语言写的实现库,还有很多python实现库,由于这个项目文档最为详细,所以本教程选用了这个项目,依赖需求如下,python需要3.8以上,python安装,再自己用pip安装依赖即可,网差可以换pip源

Mirai API HTTP 安装

按照Girai官方环境搭建就行,但过程中还是遇见了一些问题

MCL的安装

可以手动安装,但笔者自己安装的时候总是出现版本依赖问题,于是选用了mcl-installer一键安装的方式。首先进入网站,下载对应的脚本,笔者是macos 64,所以选用如下

下载,然后chmod +x mcl-installer-1.0.6-macos-amd64,添加执行权限,然后运行脚本就会自动下载,一直回车就行,如果自己有特殊需求,也可以自己选择依赖版本,下载完后目录如下

然后运行 ./mcl,下载依赖,会自动下载如下的依赖,笔者已经下载过了,所以运行时候就不用下载了

 这里下载mirai-api-http时,官方默认下载的是2.5.0版本,但安装2.5.0版本运行时可能会报错,所以我改成了2.4.0,记得要把lock改为true,随便用编辑器打开config.json,修改mirai-api-http的版本

 至此环境已经搭建完成,运行./mcl,运行help命令,可以获得可以运行的命令。

这里我们使用login 命令,login qqnumber passwd,登录一个QQ机器人

第一次登录会遇见滑块验证

 复制链接到浏览器打开,浏览器记得打开f12,也就是检查功能,选择Network 

进入链接,清空请求,方便查找token

 

选择这个token的请求, 复制ticket到框中

 回车,还会有一个手机验证,复制链接,发送给手机QQ,在手机QQ中验证,验证完即可登录成功,关闭d窗

 

  

 打开PyCharm,创建一个新的项目,新建一个python文件,复制下面的代码,account和key填写你自己的

import asyncio

from graia.broadcast import Broadcast

from graia.ariadne.app import Ariadne
from graia.ariadne.message.chain import MessageChain
from graia.ariadne.message.element import Plain
from graia.ariadne.model import Friend, MiraiSession

loop = asyncio.new_event_loop()

broadcast = Broadcast(loop=loop)
app = Ariadne(
    broadcast=broadcast,
    connect_info=MiraiSession(
        host="http://localhost:8080",  # 填入 HTTP API 服务运行的地址
        verify_key="ServiceVerifyKey",  # 填入 verifyKey
        account=123456789,  # 你的机器人的 qq 号
    )
)


@broadcast.receiver("FriendMessage")
async def friend_message_listener(app: Ariadne, friend: Friend):
    await app.sendMessage(friend, MessageChain.create([Plain("Hello, World!")]))
    # 实际上 MessageChain.create(...) 有没有 "[]" 都没关系


loop.run_until_complete(app.lifecycle())

在运行之前需要先配置一下,在config目录下,创建net.mamoe.mirai-api-http目录,名字不能变,

再创建setting.yml文件

 复制配置文件进去,key自己设置,再Python链接的时候需要用到的key就是这个(为啥CSDN不支持yml语法)

# file: "MCL/config/net.mamoe.mirai-api-http/setting.yml"
## 配置文件中的值,全为默认值

## 启用的 adapter, 内置有 http, ws, reverse-ws, webhook
adapters:
  - http
  - ws

## 是否开启认证流程, 若为 true 则建立连接时需要验证 verifyKey
enableVerify: true
verifyKey: ServiceVerifyKey

## 开启一些调试信息
debug: false

## 是否开启单 session 模式, 不建议开启
singleMode: false

## 历史消息的缓存大小
## 同时,也是 http adapter 的消息队列容量
cacheSize: 4096

## adapter 的单独配置,键名与 adapters 项配置相同
adapterSettings:
  ## 详情看 http adapter 使用说明 配置
  http:
    host: localhost
    port: 8080
    cors: ["*"]

  ## 详情看 websocket adapter 使用说明 配置
  ws:
    host: localhost
    port: 8080
    reservedSyncId: -1
    # 建议确保为负数,否则可能出 bug

保存,重启mcl,等待QQ登录成功后,运行python文件,如下则运行成功

 然后随便用一个QQ号,给机器人发个消息,就会得到Hello World的回复

本次的QQ机器人HelloWorld教程就到这里啦,后面会更新进一步应用,可私信催更交流,如果觉得本教程还可以,请三连支持一下啦!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/876262.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存