fix(gateway): add lazy_deps.ensure() to slack, matrix, dingtalk, feishu adapters (#25014)

Only Discord and Telegram had lazy-install hooks in their
check_*_requirements() functions. The remaining four platforms that were
moved to lazy_deps (Slack, Matrix, DingTalk, Feishu) would just return
False immediately if their packages weren't pre-installed — no attempt
to install them at runtime.

This means even with the .venv permissions fix (#24841), these four
platforms would still fail to load in Docker (or any fresh install)
unless the user manually ran pip install.

Add the same lazy_deps.ensure() pattern to all four, matching the
existing Discord/Telegram implementation.
This commit is contained in:
Siddharth Balyan 2026-05-13 19:28:50 +05:30 committed by GitHub
parent c3094b46e9
commit 5d90386baa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 84 additions and 11 deletions

View file

@ -1343,8 +1343,25 @@ def _run_official_feishu_ws_client(ws_client: Any, adapter: Any) -> None:
def check_feishu_requirements() -> bool:
"""Check if Feishu/Lark dependencies are available."""
return FEISHU_AVAILABLE
"""Check if Feishu/Lark dependencies are available.
Lazy-installs lark-oapi via ``tools.lazy_deps.ensure("platform.feishu")``
on first call if not present.
"""
global FEISHU_AVAILABLE
if FEISHU_AVAILABLE:
return True
try:
from tools.lazy_deps import ensure as _lazy_ensure
_lazy_ensure("platform.feishu", prompt=False)
except Exception:
return False
try:
import lark_oapi # noqa: F401
except ImportError:
return False
FEISHU_AVAILABLE = True
return True
class FeishuAdapter(BasePlatformAdapter):