Skip to main content
uwu

NoneBot

跨平台 Python 异步机器人框架

开始使用

out of box

开箱即用

使用 NB-CLI 快速构建属于你的机器人

Installation
$ pipx install nb-cli
$ nb
[?] What do you want to do?
❯ Create a NoneBot project.
Run the bot in current folder.
Manage bot driver.
Manage bot adapters.
Manage bot plugins.
...

plugin system

插件系统

插件化开发,模块化管理

import nonebot
# 加载一个插件
nonebot.load_plugin("path.to.your.plugin")
# 从文件夹加载插件
nonebot.load_plugins("plugins")
# 从配置文件加载多个插件
nonebot.load_from_json("plugins.json")
nonebot.load_from_toml("pyproject.toml")

cross-platform support

跨平台支持

支持多种平台,以及多样的事件响应方式

import nonebot
# OneBot
from nonebot.adapters.onebot.v11 import Adapter as OneBotAdapter
# QQ 机器人
from nonebot.adapters.qq import Adapter as QQAdapter
driver = nonebot.get_driver()
driver.register_adapter(OneBotAdapter)
driver.register_adapter(QQAdapter)

asynchronous first

异步开发

异步优先式开发,提高运行效率

from nonebot import on_message
# 注册一个消息响应器
matcher = on_message()
# 注册一个消息处理器
# 并重复收到的消息
@matcher.handle()
async def handler(event: Event) -> None:
await matcher.send(event.get_message())

builtin dependency injection system

依赖注入

简单清晰的依赖注入系统,内置依赖函数减少用户代码

from nonebot import on_command
# 注册一个命令响应器
matcher = on_command("help", alias={"帮助"})
# 注册一个命令处理器
# 通过依赖注入获得命令名以及参数
@matcher.handle()
async def handler(cmd = Command(), arg = CommandArg()) -> None:
await matcher.finish()