nonebot2/docs/guide/feishu-guide.md

103 lines
3.2 KiB
Markdown
Raw Normal View History

2021-07-14 10:19:37 +08:00
# 飞书机器人使用指南
基于飞书开放平台事件回调与 API 进行机器人适配,目前仅适配企业自建应用。
## 安装 NoneBot 飞书 适配器
```bash
pip install nonebot-adapter-feishu
```
## 创建应用与启用应用“机器人”能力
::: tip
2021-09-24 20:26:12 +08:00
此部分可参考[飞书开放平台-快速开发机器人-创建应用](https://open.feishu.cn/document/home/develop-a-bot-in-5-minutes/create-an-app)部分的文档。
2021-07-14 10:19:37 +08:00
:::
## 开启应用权限
应用拥有所需权限后,才能调用飞书接口获取相关信息。如果需要用到所有飞书平台的 API请开启所有应用权限。
在仅群聊功能的情况下,需要为应用开启用户、消息、通讯录和群聊权限组所有权限。
## 配置飞书事件订阅
::: tip
在添加事件订阅时请注意,带有**(历史版本)**字样的事件的格式为**不受支持的旧版事件格式**,请使用对应的**新版事件(不带历史版本字样)作为替代**。
:::
目前,飞书适配器支持以下事件:
| 事件名称 | 事件描述|
| ---- | ---- |
|接收消息|机器人接收到用户发送的消息。|
|消息已读|用户阅读机器人发送的单聊消息。|
|群解散|群组被解散。|
|群配置更改|群组配置被修改后触发此事件,包含:群主转移、群基本信息修改、群权限修改。|
|机器人进群|机器人被添加至群聊。|
|机器人被移出群|机器人被移出群聊。|
|用户进群|新用户进群。|
|撤销拉用户进群|撤销拉用户进群。|
|用户被移出群|用户主动退群或被移出群聊。|
## 在 NoneBot 配置中添加相应配置
2021-09-24 20:26:12 +08:00
`.env` 文件中添加以下配置
2021-07-14 10:19:37 +08:00
```
APP_ID=<yourAppId>
APP_SECRET=<yourAppSecret>
VERIFICATION_TOKEN=<yourVerificationToken>
```
2021-09-24 20:26:12 +08:00
复制所创建应用**“凭证和基础信息”**中的 **App ID****App Secret****“事件订阅”** 中的 **Verification Token** ,替换上面相应的配置的值。
此外,对于飞书平台的事件订阅加密机制,飞书适配器也提供 **Encrypt Key** 配置项。
```
ENCRYPT_KEY=<yourEncryptKey>
```
当此项不为空时,飞书适配器会认为用户启用了加密机制,并对事件上报中的密文进行解密。
对于**Lark飞书平台海外版**的用户,飞书适配器也提供实验性支持,仅需要在配置文件中将 **is_lark** 配置项设置为 **true** 即可。
```
IS_LARK=true
```
## 注册飞书适配器
`bot.py` 中添加:
```python
from nonebot.adapters.feishu import Bot as FeishuBot
driver.register_adapter("feishu", FeishuBot)
```
## 编写一个适用于飞书适配器的插件并加载
插件代码范例:
```python
from nonebot.plugin import on_command
from nonebot.typing import T_State
from nonebot.adapters.feishu import Bot as FeishuBot, MessageEvent
helper = on_command("say")
@helper.handle()
async def feishu_helper(bot: FeishuBot, event: MessageEvent, state: T_State):
message = event.get_message()
await helper.finish(message, at_sender=True)
```
以上代码注册了一个`say`指令,并会提取`/say`之后的内容发送到事件所对应的群或私聊。
大功告成!现在可以试试向机器人发送类似`/say Hello, Feishu!`的消息进行测试了。
2021-07-14 10:19:37 +08:00