Mirai使用教程-使用Python进行开发 @ Wings            分类 技术
发布于 星期三, 一月 6 日, 2021 年
更新于 星期二, 七月 20 日, 2021 年

本文使用 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.

成功安装http插件

配置

启动后会生成 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账号.

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

机器人

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

bot自动回复

控制台输出了如下信息:

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

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

关闭程序

只需要结束mcl即可

exit

或者

stop

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

后记

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

回到索引

留下昵称和邮箱, 可在第一时间获悉回复通知哦~

2021 FLAG

  • 找个妹子
  • 进计科
  • XCPC拿块金牌
  • 补全算法知识, 整全板子
  • 学会Web开发相关知识
  • 在服务器上搭建电子书库
  • 写个游戏并上线
  • 能弹一首曲子
  • 写首完整的曲子
  • 练习悠悠球

个人简介

我叫 Wings, 来自江西上饶, 目前人在西安, 是西电的一名学生.

常以 WingsWingsZengWingsWings的ID在各大小网站上游走, 一般来说, Wings不是我 😔, WingsZeng 一定是我 😊.

热爱算法, 喜欢钻研各种计算机技术.

业余爱好广泛, 只要不是文化课基本上都感兴趣😏.

开发/项目经历

  1. Android游戏 小墨滴的复仇 (弃坑)
  2. Android游戏 Circle Run (弃坑)
  3. Windows游戏 Snague (可能弃坑了吧)
  4. Python后端 Fathy' (可能弃坑了吧)

to be continued

教育经历

时间 学历 学校
2008-2014 小学 上饶市第十二小学
2014-2017 初中 上饶市第四中学
2017-2020 高中 上饶市第一中学
2020-2024 本科 西安电子科技大学
to be continued

比赛/竞赛经历

太久远太小的记不到了…

  1. 2017 国学竞赛初赛江西 没有分数或排名 二乙
  2. 2018 NOIP提高 258 省二
  3. 2019 CSP-S江西专场 145 省二
  4. 2019 数学竞赛初赛 70 没排名 (复赛打铁qaq)
  5. 2020 Gitee|Python贪吃蛇魔改大赛 可能是第四? 二等奖
  6. 2020 西电ACM训练基地熊猫杯 第四 银牌
  7. 2020 西安三校微软学生俱乐部Hackathon 和二等奖最后一名差0.5分 三等奖
  8. 2020 西电星火杯 三等奖
  9. 2020 西电ACM新生赛 第九 金牌
  10. 2020 ICPC 亚洲区域赛 济南站 132名 铜牌
  11. 2020-2021 第二届全国大学生算法设计与编程挑战赛(冬季赛) 924名 铜牌 (别骂了别骂了)
  12. 2020 ICPC 亚洲区域赛 昆明站 打星
  13. 2020 ICPC Asia-East Continent Final 签完到溜 打铁
  14. 西电"智能星"第一届自动驾驶小车比赛 第五 优胜奖|极速奖 本来可以冠军的别骂了别骂了
  15. 2021团体程序设计天体赛(CCCC) 个人二等奖
  16. 2021 西电 miniL CTF 优胜奖
  17. 2021 西电ACM校赛 第9名 金牌
  18. 2021 西电数模校赛 二等奖
  19. 2021 第15届IEEE 第48名
  20. 2021 CCPC 桂林站 打星

to be continued

爱好

技术

  • 算法
  • 独立游戏开发

游戏

  • Minecraft
  • Black Survival
  • I Wanna
  • Celeste
  • Life is Strange
  • Need for speed

运动

  • 篮球
  • 桌球
  • 乒乓球
  • 羽毛球
  • 慢跑

音乐

  • 吉他
  • 词曲
  • 流行

玩具

  • 魔方
    • 三阶速拧
    • 三阶盲拧
    • 高阶
  • yoyo球

追星

  • VAE
  • Benedict Cumberbatch