nonebot2/docs/guide/feishu-guide.md
StarHeartHunt 16029a33e8 📝 format doc
2021-09-24 20:29:27 +08:00

103 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 飞书机器人使用指南
基于飞书开放平台事件回调与 API 进行机器人适配,目前仅适配企业自建应用。
## 安装 NoneBot 飞书 适配器
```bash
pip install nonebot-adapter-feishu
```
## 创建应用与启用应用“机器人”能力
::: tip
此部分可参考[飞书开放平台-快速开发机器人-创建应用](https://open.feishu.cn/document/home/develop-a-bot-in-5-minutes/create-an-app)部分的文档。
:::
## 开启应用权限
应用拥有所需权限后,才能调用飞书接口获取相关信息。如果需要用到所有飞书平台的 API请开启所有应用权限。
在仅群聊功能的情况下,需要为应用开启用户、消息、通讯录和群聊权限组所有权限。
## 配置飞书事件订阅
::: tip
在添加事件订阅时请注意,带有**(历史版本)**字样的事件的格式为**不受支持的旧版事件格式**,请使用对应的**新版事件(不带历史版本字样)作为替代**。
:::
目前,飞书适配器支持以下事件:
| 事件名称 | 事件描述|
| ---- | ---- |
|接收消息|机器人接收到用户发送的消息。|
|消息已读|用户阅读机器人发送的单聊消息。|
|群解散|群组被解散。|
|群配置更改|群组配置被修改后触发此事件,包含:群主转移、群基本信息修改、群权限修改。|
|机器人进群|机器人被添加至群聊。|
|机器人被移出群|机器人被移出群聊。|
|用户进群|新用户进群。|
|撤销拉用户进群|撤销拉用户进群。|
|用户被移出群|用户主动退群或被移出群聊。|
## 在 NoneBot 配置中添加相应配置
`.env` 文件中添加以下配置
```
APP_ID=<yourAppId>
APP_SECRET=<yourAppSecret>
VERIFICATION_TOKEN=<yourVerificationToken>
```
复制所创建应用**“凭证和基础信息”**中的 **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!`的消息进行测试了。