--- contentSidebar: true sidebarDepth: 0 --- # NoneBot.drivers 模块 ## 后端驱动适配基类 各驱动请继承以下基类 ## _class_ `Driver` 基类:`abc.ABC` Driver 基类。 ### `_adapters` * **类型** `Dict[str, Type[Bot]]` * **说明** 已注册的适配器列表 ### `_bot_connection_hook` * **类型** `Set[T_BotConnectionHook]` * **说明** Bot 连接建立时执行的函数 ### `_bot_disconnection_hook` * **类型** `Set[T_BotDisconnectionHook]` * **说明** Bot 连接断开时执行的函数 ### `__init__(env, config)` * **参数** * `env: Env`: 包含环境信息的 Env 对象 * `config: Config`: 包含配置信息的 Config 对象 ### `env` * **类型** `str` * **说明** 环境名称 ### `config` * **类型** `Config` * **说明** 配置对象 ### `_clients` * **类型** `Dict[str, Bot]` * **说明** 已连接的 Bot ### _property_ `bots` * **类型** `Dict[str, Bot]` * **说明** 获取当前所有已连接的 Bot ### `register_adapter(name, adapter, **kwargs)` * **说明** 注册一个协议适配器 * **参数** * `name: str`: 适配器名称,用于在连接时进行识别 * `adapter: Type[Bot]`: 适配器 Class * `**kwargs`: 其他传递给适配器的参数 ### _abstract property_ `type` 驱动类型名称 ### _abstract property_ `logger` 驱动专属 logger 日志记录器 ### _abstract_ `run(*args, **kwargs)` * **说明** 启动驱动框架 * **参数** * `*args` * `**kwargs` ### _abstract_ `on_startup(func)` 注册一个在驱动启动时运行的函数 ### _abstract_ `on_shutdown(func)` 注册一个在驱动停止时运行的函数 ### `on_bot_connect(func)` * **说明** 装饰一个函数使他在 bot 通过 WebSocket 连接成功时执行。 * **函数参数** * `bot: Bot`: 当前连接上的 Bot 对象 ### `on_bot_disconnect(func)` * **说明** 装饰一个函数使他在 bot 通过 WebSocket 连接断开时执行。 * **函数参数** * `bot: Bot`: 当前连接上的 Bot 对象 ### `_bot_connect(bot)` 在 WebSocket 连接成功后,调用该函数来注册 bot 对象 ### `_bot_disconnect(bot)` 在 WebSocket 连接断开后,调用该函数来注销 bot 对象 ## _class_ `ForwardDriver` 基类:`nonebot.drivers.Driver` Forward Driver 基类。将客户端框架封装,以满足适配器使用。 ### _abstract_ `setup_http_polling(setup)` * **说明** 注册一个 HTTP 轮询连接,如果传入一个函数,则该函数会在每次连接时被调用 * **参数** * `setup: Union[HTTPPollingSetup, Callable[[], Awaitable[HTTPPollingSetup]]]` ### _abstract_ `setup_websocket(setup)` * **说明** 注册一个 WebSocket 连接,如果传入一个函数,则该函数会在每次重连时被调用 * **参数** * `setup: Union[WebSocketSetup, Callable[[], Awaitable[WebSocketSetup]]]` ## _class_ `ReverseDriver` 基类:`nonebot.drivers.Driver` Reverse Driver 基类。将后端框架封装,以满足适配器使用。 ### _abstract property_ `server_app` 驱动 APP 对象 ### _abstract property_ `asgi` 驱动 ASGI 对象 ## _class_ `HTTPConnection` 基类:`abc.ABC` ### `http_version` One of `"1.0"`, `"1.1"` or `"2"`. ### `scheme` URL scheme portion (likely `"http"` or `"https"`). ### `path` HTTP request target excluding any query string, with percent-encoded sequences and UTF-8 byte sequences decoded into characters. ### `query_string` URL portion after the `?`, percent-encoded. ### `headers` A dict of name-value pairs, where name is the header name, and value is the header value. Order of header values must be preserved from the original HTTP request; order of header names is not important. Header names must be lowercased. ### _abstract property_ `type` Connection type. ## _class_ `HTTPRequest` 基类:`nonebot.drivers.HTTPConnection` HTTP 请求封装。参考 [asgi http scope](https://asgi.readthedocs.io/en/latest/specs/www.html#http-connection-scope)。 ### `method` The HTTP method name, uppercased. ### `body` Body of the request. Optional; if missing defaults to `b""`. ### _property_ `type` Always `http` ## _class_ `HTTPResponse` 基类:`object` HTTP 响应封装。参考 [asgi http scope](https://asgi.readthedocs.io/en/latest/specs/www.html#http-connection-scope)。 ### `status` HTTP status code. ### `body` HTTP body content. Optional; if missing defaults to `None`. ### `headers` A dict of name-value pairs, where name is the header name, and value is the header value. Order must be preserved in the HTTP response. Header names must be lowercased. Optional; if missing defaults to an empty dict. ### _property_ `type` Always `http` ## _class_ `WebSocket` 基类:`nonebot.drivers.HTTPConnection`, `abc.ABC` WebSocket 连接封装。参考 [asgi websocket scope](https://asgi.readthedocs.io/en/latest/specs/www.html#websocket-connection-scope)。 ### _property_ `type` Always `websocket` ### _abstract property_ `closed` * **类型** `bool` * **说明** 连接是否已经关闭 ### _abstract async_ `accept()` 接受 WebSocket 连接请求 ### _abstract async_ `close(code)` 关闭 WebSocket 连接请求 ### _abstract async_ `receive()` 接收一条 WebSocket text 信息 ### _abstract async_ `receive_bytes()` 接收一条 WebSocket binary 信息 ### _abstract async_ `send(data)` 发送一条 WebSocket text 信息 ### _abstract async_ `send_bytes(data)` 发送一条 WebSocket binary 信息 ## _class_ `HTTPPollingSetup` 基类:`object` ### `adapter` 协议适配器名称 ### `self_id` 机器人 ID ### `url` URL ### `method` HTTP method ### `body` HTTP body ### `headers` HTTP headers ### `http_version` HTTP version ### `poll_interval` HTTP 轮询间隔 ## _class_ `WebSocketSetup` 基类:`object` ### `adapter` 协议适配器名称 ### `self_id` 机器人 ID ### `url` URL ### `headers` HTTP headers ### `reconnect_interval` WebSocket 重连间隔