Skip to content
ieew edited this page Sep 17, 2022 · 12 revisions

欢迎来到 nonebot_adapter_mirai2wiki

说明

该项目依赖 nonebot2 而存在, 因此使用之前必须先安装 nonebot2

安装

我们推荐您在虚拟环境中使用, 这样可以防止干扰您的其他 python 项目的正常运行

python -m venv venv  # 创建一个虚拟环境
source venv/bin/activate  # win 请在 PowerShell 或 cmd 使用 venv/bin/activate.ps1 或 venv/bin/activate.bat  # 进入虚拟环境
pip install nb-cli  # 安装 nonebot2 脚手架(推荐)
# 当然你也可以不使用脚手架 → pip install nonebot2
nb create  # 使用 nb-cli 创建一个最原始的 bot
nb adapter install mirai2  # 仅在上一条指令创建 bot 时没有选中 mirai2 的情况下才需要

# 退出虚拟环境请使用 deactivate

配置 .env

ENVIRONMENT=dev
VERIFY_KEY=QDTTEGYGfOGBVcX  # MiraiApiHttp2 配置文件里的 token
driver=~fastapi+~websockets  # nonebot_adapter_mirai2 需要使用 websockets 驱动所以需要加该行

MIRAI_HOST=127.0.0.1  # MiraiApiHttp2 的 ip
MIRAI_PORT=5700  # MiraiApiHttp2 的端口
MIRAI_QQ=["1234567890"]  # Mirai 上已经登录的 qq 号
SUPERUSERS=[]  # nonebot2 的超管(也可理解为bot的主人什么的)

使用

需先启动 mirai 并登录 bot 账号,因为使用的是正向 ws

bot.py 中的内容

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import nonebot
from nonebot.adapters.mirai2 import Adapter as MIRAI2Adapter  # 引用 nonebot_adapter_mirai2

nonebot.init()
app = nonebot.get_asgi()

driver = nonebot.get_driver()
driver.register_adapter(MIRAI2Adapter)  # 将其塞入 nonebot2 中

nonebot.load_from_toml("pyproject.toml")

if __name__ == "__main__":
    nonebot.logger.warning("Always use `nb run` to start the bot instead of manually running!")
    nonebot.run(app="__mp_main__:app")

注意

  • nonebot2.0.0b1adapter 相关 api 存在变化,因此该 adapter 很可能不兼容早于 nonebot2.0.0b1 的版本号。
  • nonebot_adapter_mirai2 使用的是正向 ws, 因此需要用户首先启动 mirai 并已登录 bot 账号, 然后再启动 nonebot2
  • 如果想 Pull requests 请往 dev 分支中提交 pr,我将在后续更新时合并到 main
  • 当你想 直接 调用 mahapi 时,需要使用 小驼峰显式 声明每个参数的参数名,才能正常调用

miraiws 配置范例

该配置位于 mirai 目录中的 config/net.mamoe.mirai-api-http/ setting.yml(前提是你已经给 mirai 安装了MiraiApiHttp2 插件并且启动过一次)

adapters: 
  - ws
debug: false
enableVerify: true
verifyKey: INITKEYGfCYBVcX
singleMode: false
cacheSize: 2048
adapterSettings:
  ws:
    host: localhost
    port: 5700 # 该端口务必不要和 nonebot2 相冲突, 因为 nonebot2 会默认监听 8080 端口。
               # 如果 mirai 侧也监听 8080 端口则会导致其中一方的 web 服务启动失败
Clone this wiki locally