驱动器 (Driver) 是机器人运行的基石,它是机器人初始化的第一步,主要负责数据收发。
驱动器类型
驱动器类型大体上可以分为两种:
Forward
:即客户端型驱动器,多用于使用 HTTP 轮询,连接 WebSocket 服务器等情形。Reverse
:即服务端型驱动器,多用于使用 WebHook,接收 WebSocket 客户端连接等情形。
客户端型驱动器可以分为以下两种:
服务端型驱动器目前有:
配置驱动器
NoneBot 中的客户端和服务端型驱动器可以相互配合使用,但服务端型驱动器仅能选择一个。所有驱动器模块都会包含一个 Driver
子类,即驱动器类,他可以作为驱动器单独运行。同时,客户端驱动器模块中还会提供一个 Mixin
子类,用于在与其他驱动器配合使用时加载。因此,驱动器配置格式采用特殊语法:<module>[:<Driver>][+<module>[:<Mixin>]]*
。
其中,<module>
代表驱动器模块路径;<Driver>
代表驱动器类名,默认为 Driver
;<Mixin>
代表驱动器混入类名,默认为 Mixin
。即,我们需要选择一个主要驱动器,然后在其基础上配合使用其他驱动器的功能。主要驱动器可以为客户端或服务端类型,但混入类驱动器只能为客户端类型。
特别的,为了简化内置驱动器模块路径,我们可以使用 ~
符号作为内置驱动器模块路径的前缀,如 ~fastapi
代表使用内置驱动器 fastapi
。NoneBot 内置了多个驱动器适配,但需要安装额外依赖才能使用,具体请参考安装驱动器。常见的驱动器配置如下:
获取驱动器
在 NoneBot 框架初始化完成后,我们就可以通过 get_driver()
方法获取全局驱动器实例:
内置驱动器
类型:服务端驱动器
NoneBot 内置的空驱动器,不提供任何收发数据功能,可以在不需要外部网络连接时使用。
类型:ASGI 服务端驱动器
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
FastAPI 是一个易上手、高性能的异步 Web 框架,具有极佳的编写体验。 FastAPI 可以通过类型注解、依赖注入等方式实现输入参数校验、自动生成 API 文档等功能,也可以挂载其他 ASGI、WSGI 应用。
类型:str | None
默认值:None
说明:FastAPI
提供的 OpenAPI
JSON 定义地址,如果为 None
,则不提供 OpenAPI
JSON 定义。
类型:str | None
默认值:None
说明:FastAPI
提供的 Swagger
文档地址,如果为 None
,则不提供 Swagger
文档。
类型:str | None
默认值:None
说明:FastAPI
提供的 ReDoc
文档地址,如果为 None
,则不提供 ReDoc
文档。
类型:bool
默认值:True
说明:FastAPI
提供的 OpenAPI
JSON 定义中是否包含适配器路由的 Schema
。
类型:bool
默认值:False
说明:是否开启 uvicorn
的 reload
功能,需要在机器人入口文件提供 ASGI 应用路径。
类型:List[str] | None
默认值:None
说明:重载监控文件夹列表,默认为 uvicorn 默认值
类型:float | None
默认值:None
说明:重载延迟,默认为 uvicorn 默认值
类型:List[str] | None
默认值:None
说明:要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
类型:List[str] | None
默认值:None
说明:不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
类型:Dist[str, Any]
默认值:{}
说明:传递给 FastAPI
的其他参数
类型:ASGI 服务端驱动器
Quart is an asyncio reimplementation of the popular Flask microframework API.
类型:bool
默认值:False
说明:是否开启 uvicorn
的 reload
功能,需要在机器人入口文件提供 ASGI 应用路径。
类型:List[str] | None
默认值:None
说明:重载监控文件夹列表,默认为 uvicorn 默认值
类型:float | None
默认值:None
说明:重载延迟,默认为 uvicorn 默认值
类型:List[str] | None
默认值:None
说明:要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
类型:List[str] | None
默认值:None
说明:不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
类型:Dist[str, Any]
默认值:{}
说明:传递给 Quart
的其他参数
类型:HTTP 客户端驱动器
HTTPX is a fully featured HTTP client for Python 3, which provides sync and async APIs, and support for both HTTP/1.1 and HTTP/2.
类型:WebSocket 客户端驱动器
websockets is a library for building WebSocket servers and clients in Python with a focus on correctness, simplicity, robustness, and performance.
类型:HTTP/WebSocket 客户端驱动器
原文链接:https://nonebot.dev/docs/advanced/driver