pywayne-lark-bot-listener

Feishu/Lark message listener for real-time message processing via WebSocket. Use when users need to listen for incoming Feishu messages (text, image, file, post) with automatic deduplication and async handling. Provides convenient decorators (text_handler, image_handler, file_handler) that handle message download/cleanup and optional automatic reply.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "pywayne-lark-bot-listener" with this command: npx skills add wangyendt/lark-bot-listener

Pywayne Lark Bot Listener

飞书消息监听器,通过 WebSocket 实时接收和处理飞书消息。

Quick Start

from pywayne.lark_bot_listener import LarkBotListener

# 初始化监听器
listener = LarkBotListener(
    app_id="your_app_id",
    app_secret="your_app_secret",
    message_expiry_time=60  # 消息去重过期时间(秒)
)

# 处理文本消息
@listener.text_handler()
async def handle_text(text: str):
    print(f"收到消息: {text}")

# 启动监听
listener.run()

Decorators - 消息处理装饰器

text_handler

文本消息处理装饰器,直接传递文本内容。

@listener.text_handler(group_only=False, user_only=False)
async def handle_text(text: str, chat_id: str, is_group: bool, group_name: str, user_name: str):
    print(f"收到来自 {user_name} 的消息: {text}")
    listener.send_message(chat_id, f"已收到:{text}")

参数说明(除 text 外均为可选):

参数类型说明
textstr文本内容(必需)
chat_idstr会话 ID
is_groupbool是否群组消息
group_namestr群组名称(私聊时为空)
user_namestr发送消息的用户姓名

装饰器参数

  • group_only=True: 只处理群组消息
  • user_only=True: 只处理私聊消息

image_handler

图片消息处理装饰器,自动下载图片到临时文件并清理。

from pathlib import Path
import cv2
import tempfile

@listener.image_handler()
async def handle_image(image_path: Path, user_name: str) -> Path:
    # 处理图片
    img = cv2.imread(str(image_path))
    # ...处理逻辑...
    # 返回新图片路径会自动发送回去,返回 None 则不发送
    return image_path

参数说明(除 image_path 外均为可选):

参数类型说明
image_pathPath临时图片文件路径(必需)
chat_idstr会话 ID
is_groupbool是否群组消息
group_namestr群组名称
user_namestr发送消息的用户姓名

返回值

  • 返回 Path: 自动上传并发送新图片
  • 返回 None: 不发送任何图片

file_handler

文件消息处理装饰器,自动下载文件到临时文件并清理。

@listener.file_handler()
async def handle_file(file_path: Path, user_name: str) -> Path:
    # 处理文件
    with open(file_path, 'r') as f:
        content = f.read()
    # ...处理逻辑...
    return file_path  # 返回文件路径会自动发送回去

参数说明(除 file_path 外均为可选):

参数类型说明
file_pathPath临时文件路径(必需)
chat_idstr会话 ID
is_groupbool是否群组消息
group_namestr群组名称
user_namestr发送消息的用户姓名

listen - 通用消息监听器

用于监听任意类型消息(包括富文本 post)。

@listener.listen(message_type="post")
async def handle_post(ctx: MessageContext):
    print(f"收到富文本消息: {ctx.content}")

MessageContext 属性

属性类型说明
chat_idstr会话 ID
user_idstr用户 ID
message_typestr消息类型
contentstr消息内容(文本消息为字符串,其他类型为 JSON 字符串)
is_groupbool是否群组消息
chat_typestr会话类型
message_idstr消息 ID

send_message - 发送消息

发送 Markdown 格式的消息到飞书。

listener.send_message(chat_id, "**这是加粗文本**")
listener.send_message(chat_id, "普通文本\n[链接](https://example.com)")

完整示例

from pywayne.lark_bot_listener import LarkBotListener
from pathlib import Path

listener = LarkBotListener(
    app_id="your_app_id",
    app_secret="your_app_secret"
)

# 文本消息 - AI 回复示例
@listener.text_handler()
async def handle_text(text: str, chat_id: str, user_name: str):
    # 处理逻辑...
    listener.send_message(chat_id, f"收到来自 {user_name} 的消息")

# 图片消息 - 自动下载和清理
@listener.image_handler()
async def handle_image(image_path: Path):
    # image_path 是临时文件,处理完会自动清理
    print(f"处理图片: {image_path}")

# 文件消息 - 自动下载和清理
@listener.file_handler(group_only=True)
async def handle_file(file_path: Path, group_name: str):
    print(f"收到文件: {file_path} 来自 {group_name}")

# 富文本消息
@listener.listen(message_type="post")
async def handle_post(ctx: MessageContext):
    import json
    post_content = json.loads(ctx.content)
    print(f"收到富文本: {post_content}")

# 启动监听
listener.run()

注意事项

  1. 异步处理: 所有处理函数使用 async/await 语法
  2. 消息去重: 每个处理函数独立去重,默认 60 秒过期
  3. 临时文件: 图片和文件下载到 系统临时目录/lark_bot_temp,处理完自动清理
  4. 错误隔离: 每个处理函数异常独立捕获,不影响其他函数
  5. 多注册: 同一消息可被多个处理函数处理

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Vmware Nsx

Use this skill whenever the user needs to manage VMware NSX networking — segments, gateways, NAT, routing, and IP pools. Directly handles: create/manage netw...

Registry SourceRecently Updated
5050zw008
General

Vmware Storage

Use this skill whenever the user needs to manage VMware storage — datastores, iSCSI targets, and vSAN clusters. Directly handles: browse datastores, scan for...

Registry SourceRecently Updated
5360zw008
General

Vmware Avi

Use this skill whenever the user mentions load balancing, ingress, virtual services, pool members, AVI, NSX ALB, AKO, or application delivery. Also trigger w...

Registry SourceRecently Updated
4720zw008
General

Vmware Vks

Use this skill whenever the user needs to manage vSphere Kubernetes Service (VKS) — Supervisor clusters, vSphere Namespaces, and TKC cluster lifecycle. Direc...

Registry SourceRecently Updated
5070zw008