inbound
feishu.im.inbound
¶
飞书入站消息的无状态读取助手。
提供从飞书消息体(im.message.receive_v1 事件中的 message 对象,或
feishu.im.messages.IMNamespace.get 返回的消息数据)中提取信息的纯函数:
feishu.im.inbound.message_text 提取可读文本,
feishu.im.inbound.is_mentioned 判断机器人是否被提及。
is_mentioned
¶
is_mentioned(message: dict[str, Any], *, open_id: str | None = None, union_id: str | None = None) -> bool
判断消息是否提及(@)了指定用户。
遍历消息的 mentions 数组,若其中任一条目的 id 匹配给定的 open_id 或 union_id,
则返回 True。不同事件类型与接口版本下,条目的 id 既可能是同时含 open_id、union_id
的字典,也可能是单一字符串,因此对两种形态都进行匹配。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书消息体字典,通常含 |
必需 |
|
str | None
|
待匹配的用户 open ID;为空表示不按 open ID 匹配。 |
None
|
|
str | None
|
待匹配的用户 union ID;为空表示不按 union ID 匹配。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
bool
|
消息提及了指定用户时返回 |
飞书文档
示例:
源代码位于: feishu/im/inbound.py
message_text
¶
从飞书消息体中提取可读文本。
解析消息体内的 content JSON:对 text 类型读取 content['text'];对富文本 post 类型
(content 含 content/elements 二维数组)将各段文本以空行拼接,若含 title 则以
Markdown 二级标题形式前置。随后用消息的 mentions 数组将文本中的 @_user_N 占位符替换为
@<姓名>。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
dict[str, Any]
|
飞书消息体字典,含 |
必需 |
返回:
| 类型 | 描述 |
|---|---|
str
|
提取并解析后的文本;无法解析时返回空字符串。 |
飞书文档
示例: