From 7690f0e640e04ffa3678cb550b980252f485977d Mon Sep 17 00:00:00 2001 From: yanyongyu Date: Mon, 27 Dec 2021 16:06:47 +0800 Subject: [PATCH] :memo: add register adapter doc --- .../docs/guide/tutorial/register-adapter.md | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 website/docs/guide/tutorial/register-adapter.md diff --git a/website/docs/guide/tutorial/register-adapter.md b/website/docs/guide/tutorial/register-adapter.md new file mode 100644 index 00000000..c7f72958 --- /dev/null +++ b/website/docs/guide/tutorial/register-adapter.md @@ -0,0 +1,93 @@ +--- +sidebar_position: 6 +description: 协议适配器的功能与使用 + +options: + menu: + weight: 26 + category: guide +--- + +# 使用适配器 + +:::tip 提示 +如何**安装**协议适配器请参考 [安装协议适配器](../start/install-adapter.md) +::: + +## 协议适配器的功能 + +由于 NoneBot 的跨平台特性,需要支持不同的协议,因此需要对特定的平台协议编写一个转换器。 + +协议适配器即是充当中间人的转换器,它将驱动器所收到的数据转换为可以被 NoneBot 处理的事件 Event,并将事件传递给 NoneBot。 + +同时,协议适配器还会处理 API 调用,转换为可以被驱动器处理的数据发送出去。 + +## 注册协议适配器 + +NoneBot 在默认情况下并不会加载任何协议适配器,需要自己手动注册。下方是个加载协议适配器的例子: + +```python title=bot.py +import nonebot +from your_adapter_package import Adapter + +nonebot.init() +driver = nonebot.get_driver() +driver.register_adapter(Adapter) + +nonebot.run() +``` + +加载步骤如下: + +### 导入协议适配器 + +首先从你需要的协议适配器的包中导入适配器类,通常为 `Adapter` + +```python title=bot.py {2} +import nonebot +from your_adapter_package import Adapter + +nonebot.init() +driver = nonebot.get_driver() +driver.register_adapter(Adapter) + +nonebot.run() +``` + +### 获得驱动器实例 + +加载协议适配器需要通过驱动器来进行,因此,你需要先初始化 NoneBot,并获得驱动器实例。 + +```python title=bot.py {4,5} +import nonebot +from your_adapter_package import Adapter + +nonebot.init() +driver = nonebot.get_driver() +driver.register_adapter(Adapter) + +nonebot.run() +``` + +### 注册 + +获得驱动器实例后,你需要调用 `register_adapter` 方法来注册协议适配器。NoneBot 会通过协议适配器的 `get_name` 方法来获得协议适配器的名字。 + +:::warning 注意 +你可以多次调用来注册多个协议适配器,但不能注册多次相同的协议适配器,发生这种情况时 NoneBot 会给出一个警告并忽略这次注册。 +::: + +```python title=bot.py {6} +import nonebot +from your_adapter_package import Adapter + +nonebot.init() +driver = nonebot.get_driver() +driver.register_adapter(Adapter) + +nonebot.run() +``` + +:::danger 警告 +协议适配器需要在 NoneBot 启动前进行注册,即 `nonebot.run()` 之前,否则会出现未知的错误。 +:::