Mirai使用教程-使用Python进行开发

更好的阅读体验请访问个人博客

本文使用 graia-application-mirai 包进行开发.

前言

还是想用python写(因为我没搭jvm环境, 甚至连个IDE也没下). 官方的SDK推荐中有Python的Graia Framework, 还找到了一个叫 kuriyama的. Graia Framework 最近有更新, 就先试试Graia Framework吧.

准备工作

mirai-api-http

由于 Graia Framework 是通过 mirai-api-http 插件写的SDK, 所以我们需要先安装这个插件.

安装

release里面下载一个, 然后放到 mcl 文件夹目录下的 plugins 文件夹内.

启动mcl.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h26S6S6n-1622194081335)(/img/mirai-tutorial-python/mirai-api-http-successful.jpg)]

配置

启动后会生成 config/net.mamoe.mirai-api-http/setting.yml 文件, 有关选项如下说明:

## 该配置为全局配置,对所有Session有效

# 可选,默认值为0.0.0.0
host: '0.0.0.0'

# 可选,默认值为8080
port: 8080

# 可选,默认由插件第一次启动时随机生成,建议手动指定
authKey: 12345678

# 可选,缓存大小,默认4096.缓存过小会导致引用回复与撤回消息失败
cacheSize: 4096

# 可选,是否开启websocket,默认关闭,建议通过Session范围的配置设置
enableWebsocket: true	# Graia Framework 作者在文档中建议打开

# 可选,配置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: {}

输入一个authKey, 以及 Graia Framework 作者在文档中建议 enableWebsocket = true. 我们就完成配置了.

Python

安装 graia-application-mirai

pip3 install graia-application-mirai

Hello World!

写一个这样的代码:

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="graia-mirai-api-http-authkey", # 填入 authKey
        account=1234567890, # 你的机器人的 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()

先开启mcl, 并登录bot账号.

然后运行这份代码. 成功的话应该是这样的:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6JkRHoc-1622194081338)(/img/mirai-tutorial-python/bot-connected.jpg)]

和机器人发一条消息试试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PpafPmbK-1622194081339)(/img/mirai-tutorial-python/qq-hello-world.jpg)]

控制台输出了如下信息:

XXX(A) -> [mirai:source:[10098],[2037031566]]hello
Friend(A) <- Hello, World!

mcl的控制台和这个python的都有类似的信息

关闭程序

只需要结束mcl即可

exit

或者

stop

然后python就会无限尝试链接, 直接结束它就行了.

后记

测试的时候在本机搞的, 记得在服务器上也安装 python 和 graia-application-mirai 包.

回到索引

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值