Skip to main content

Lark Channel SDK for Python

lark-channel-sdk is a Python package for building Feishu and Lark conversational bots. It provides FeishuChannel as the main entry point for event listening, message normalization, policy control, outbound messaging, media handling, card callbacks, and streaming replies.

Install

pip install lark-channel-sdk

Minimal Example

import asyncio
import os

from lark_channel import FeishuChannel

channel = FeishuChannel(
    app_id=os.environ["LARK_APP_ID"],
    app_secret=os.environ["LARK_APP_SECRET"],
)


async def on_message(msg):
    await channel.send(
        msg.chat_id,
        {"markdown": f"received: {msg.content_text}"},
        {"reply_to": msg.message_id},
    )


channel.on("message", on_message)
asyncio.run(channel.connect())

Documentation

Migration from lark_oapi.channel

Install the standalone package and update the import path:

pip install lark-channel-sdk
from lark_channel import FeishuChannel

lark-channel-sdk can be installed alongside lark-oapi. Use lark-channel-sdk for Channel bot workflows and keep using lark-oapi when your application needs the full OpenAPI SDK surface.

See the migration guide for import mapping, runtime compatibility notes, and a migration checklist.

Meeting Channel

Agents that perceive and respond inside a live meeting — captions, meeting chat, participants, shared documents. Two entry points, one session type.

# The bot joins as a real participant and can speak into the meeting.
channel.on("meetingInvited", lambda inv: channel.join_meeting(inv.meeting_no))

# Or follow the meeting a user is already in, without joining it.
session = await channel.follow_my_meeting(user_open_id="ou_...")

session.on("transcript", lambda e: notes.append(e.text))
session.on("chat", on_chat)
await session.send_message("noted")   # joined sessions only
await session.leave()

Three things to know before you start:

  • The bot's own in-meeting messages come back to it. So a meeting-chat handler needs if event.self_echo: return, or the bot spends the meeting replying to itself at network speed.
  • Disconnecting does not take the bot out of the meeting. disconnect() closes the event channel; the bot stays a participant, which is what makes reconnects safe. A process that is really exiting should leave() each session first.
  • follow_my_meeting reads what every participant says, and the bot is not in the participant list. Two more things: the user_open_id you pass has to be somebody you have already established is the requester — the SDK receives a string and cannot check that for you — and what the user grants in one go is every scope your app applied for, not just the meeting read. See Security configuration.

For event ordering, how captions settle from interim to final, how many sessions can run at once, and what to check when nothing arrives, see Meeting channel.

Security Mode

SecurityConfig defaults to compatibility mode so existing bots continue to run during migration. For production rollout, start with audit mode and then move to strict mode after reviewing audit events:

from lark_channel import FeishuChannel, SecurityConfig

channel = FeishuChannel(
    app_id="cli_xxx",
    app_secret="***",
    security=SecurityConfig(mode="audit"),
)

See Security configuration for strict-mode behavior and webhook compatibility switches.

Local Development

pip install -e ".[test]"
python -m pytest

License

This distribution is licensed as MIT AND BSD-3-Clause: project code is licensed under the MIT License as described in LICENSE, and vendored third-party code is documented in THIRD_PARTY_NOTICES.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lark_channel_sdk-1.3.0.tar.gz (453.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lark_channel_sdk-1.3.0-py3-none-any.whl (631.9 kB view details)

Uploaded Python 3

File details

Details for the file lark_channel_sdk-1.3.0.tar.gz.

File metadata

  • Download URL: lark_channel_sdk-1.3.0.tar.gz
  • Upload date:
  • Size: 453.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for lark_channel_sdk-1.3.0.tar.gz
Algorithm Hash digest
SHA256 895a485198611069d562965e184ae50bf7f5233131c4c7752907c7f8af9824f4
MD5 d309d03217ea4bf7660039238aea60ee
BLAKE2b-256 9ca7e0e9451930b8491bc8e59784cde5b247416b82e2b45e2ea29532d0d913b7

See more details on using hashes here.

File details

Details for the file lark_channel_sdk-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for lark_channel_sdk-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3524148dfbd25b60498b5ca939b937397083bd7f9ed7a810af9a2b3bb6bc44ed
MD5 3c87cbade48230b13803f59af38fd0ef
BLAKE2b-256 f3b41b7d18b5f7d6803f974923e48405952531daf68161e104fd414f0697d92d

See more details on using hashes here.

Release history Release notifications | RSS feed

1.4.0

2 files

This release

1.3.0 This release

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page