Skip to main content
Version: 2.6.0

配置连接

配置驱动器

飞书适配器需要同时启用正向驱动器及 ASGI 驱动器,例如安装 httpx(正向)和 fastapi(ASGI):

pip install nonebot[httpx] nonebot[fastapi]

同时需要在 .env 配置文件中启用对应的驱动器,例如:

DRIVER=~fastapi+~httpx

创建应用与启用应用“机器人”能力

提示

此部分可参考飞书开放平台-快速开发机器人-创建应用部分的文档。

在 NoneBot 配置文件中添加相应配置

复制所创建应用 基础信息 > 凭证和基础信息 中的 App IDApp Secret“事件订阅” 中的 Verification Token ,替换以下配置模板中的值。

如果在飞书开发者后台的事件订阅中配置了事件上报的 Encrypt Key,也需要传入 FEISHU_BOTS 中。

encrypt_key 存在且不为空时,飞书适配器会认为用户启用了加密机制,并对事件上报中的密文进行解密。

如果不需要启用加密功能,请将配置项中的 encrypt_key 键值对删去,或将 encrypt_key 置为 null

对于Lark(飞书平台海外版)的用户,需要在配置文件中将 is_lark 改为 true

FEISHU_BOTS='
[
{
"app_id": "<your app_id>",
"app_secret": "<your app_secret>",
"verification_token": "<your app_verification_token>",
"encrypt_key": "<your encrypt_key>",
"is_lark": false
}
]
'

对于企业自建飞书平台的用户,可以使用 api_base 分 Bot 指定 API 调用地址。

FEISHU_BOTS='
[
{
"app_id": "<your app_id>",
"app_secret": "<your app_secret>",
"verification_token": "<your app_verification_token>",
"encrypt_key": "<your encrypt_key>",
"is_lark": false,
"api_base":"<your feishu domain>"
}
]
'

飞书适配器支持同时传入多份配置,仅需要按相同格式传入 FEISHU_BOTS 即可。

FEISHU_BOTS='
[
{
"app_id": "<your app_id>",
"app_secret": "<your app_secret>",
"verification_token": "<your app_verification_token>",
"encrypt_key": "<your encrypt_key>",
"is_lark": false
},
{
"app_id": "<your app_id2>",
"app_secret": "<your app_secret2>",
"verification_token": "<your app_verification_token2>",
"encrypt_key": "<your encrypt_key>",
"is_lark": false
}
]

开启应用权限

应用拥有所需权限后,才能调用飞书接口获取相关信息。如果需要用到所有飞书平台的 API,请开启所有应用权限。

在仅群聊功能的情况下,需要为应用开启用户、消息、通讯录和群聊权限组所有权限,并且启用机器人角色以便获取机器人昵称。

配置飞书事件订阅

配置上报地址

开发配置 > 事件与回调 选单中使用以下地址作为事件订阅上报入口点,对应的以 $ 开头的变量请使用 .env.* 文件中所定义的值进行替换,$app_id 替换为飞书开放平台提供的 App ID。

http://$HOST:$PORT/feishu/$app_id

配置事件订阅列表

提示

在添加事件订阅时请注意,带有(历史版本)字样的事件的格式为不受支持的旧版事件格式,请使用对应的新版事件(不带历史版本字样)作为替代

编写一个适用于飞书适配器的插件并加载

插件代码范例:

from nonebot.plugin import on_command
from nonebot.typing import T_State
from nonebot.params import CommandArg
from nonebot.adapters.feishu import Bot as FeishuBot, MessageEvent, Message

helper = on_command("say")


@helper.handle()
async def feishu_helper(
bot: FeishuBot,
event: MessageEvent,
state: T_State,
command_arg: Message = CommandArg(),
):
await helper.finish(command_arg, at_sender=True)

以上代码注册了一个对飞书平台适用的 say 指令,并会提取 /say 之后的内容发送到事件所对应的群或私聊。

大功告成!现在可以试试向机器人发送类似 /say Hello, Feishu! 的消息进行测试了。