---
sidebar_position: 6
description: 协议适配器的功能与使用

options:
  menu:
    weight: 23
    category: guide
---

# 使用适配器

:::tip 提示
如何**安装**协议适配器请参考[安装协议适配器](../start/install-adapter.mdx)。
:::

:::warning 提示
各适配器的具体配置与说明请跳转至 [商店 - 适配器](/store) 中各适配器右上角的主页或文档进行查看。
:::

## 协议适配器的功能

由于 NoneBot2 的跨平台特性，需要支持不同的协议，因此需要对特定的平台协议编写一个转换器。

协议适配器即是充当中间人的转换器，它将驱动器所收到的数据转换为可以被 NoneBot2 处理的事件 Event，并将事件传递给 NoneBot2。

同时，协议适配器还会处理 API 调用，转换为可以被驱动器处理的数据发送出去。

## 注册协议适配器

NoneBot2 在默认情况下并不会加载任何协议适配器，需要自己手动注册。下方是个加载协议适配器的例子：

```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()
```

### 获得驱动器实例

加载协议适配器需要通过驱动器来进行，因此，你需要先初始化 NoneBot2，并获得驱动器实例。

```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()` 之前，否则会出现未知的错误。
:::
