mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-08 14:56:03 +00:00
5.8 KiB
5.8 KiB
KOOK EBA Adapter
Status
KOOK has been migrated to the EBA adapter directory:
src/langbot/pkg/platform/adapters/kook/
├── adapter.py
├── api_impl.py
├── event_converter.py
├── manifest.yaml
├── message_converter.py
├── platform_api.py
└── types.py
The adapter is registered as kook-eba.
Configuration
| Field | Required | Default | Description |
|---|---|---|---|
token |
Yes | "" |
KOOK bot token. |
enable-stream-reply |
Yes | false |
Reserved for shared platform configuration compatibility. |
Events
| Event | Evidence | Notes |
|---|---|---|
message.received |
plugin-e2e-ui |
Real KOOK UI channel message reached EBAEventProbe as MessageReceivedEvent. |
platform.specific |
plugin-e2e-ui |
KOOK gateway event without a common EBA mapping reached EBAEventProbe as PlatformSpecificEventReceived. |
Common APIs
| API | Evidence | Notes |
|---|---|---|
send_message |
plugin-e2e-outbound |
Probe plugin sent channel messages through SDK send_message; KOOK returned message IDs. |
reply_message |
unit |
Supports reply_msg_id and optional quoted replies when the source message ID is available. |
get_message |
plugin-e2e-outbound |
Probe plugin fetched the cached triggering message. |
get_group_info |
plugin-e2e-outbound |
Probe plugin received cached KOOK channel info. |
get_group_list |
plugin-e2e-outbound |
Probe plugin received cached channel/group entities observed by the adapter. |
get_group_member_info |
plugin-e2e-outbound |
Probe plugin received cached sender info as a group member. |
get_user_info |
plugin-e2e-outbound |
Probe plugin received cached sender user info. |
get_friend_list |
plugin-e2e-outbound |
Probe plugin received cached users. |
upload_file |
unit |
Uses KOOK asset/create and returns URL/ID. |
get_file_url |
unit |
KOOK media IDs are URL-like in the adapter path; returns the ID unchanged. |
delete_message |
unit |
Calls KOOK delete endpoints. Live permission verification is still required. |
forward_message |
plugin-e2e-outbound |
Probe plugin sent flattened forward content through SDK send_message. |
call_platform_api |
plugin-e2e-outbound |
Probe plugin called safe KOOK platform-specific APIs through SDK call_platform_api. |
Platform-Specific APIs
| Action | Evidence | Notes |
|---|---|---|
get_current_user |
plugin-e2e-outbound |
Probe plugin called user/me. |
get_user |
plugin-e2e-outbound |
Probe plugin called user/view for the triggering sender. |
get_channel |
plugin-e2e-outbound |
Probe plugin called channel/view for the triggering channel. |
get_guild |
plugin-e2e-outbound |
Probe plugin called guild/view; gateway URLs redact token query values. |
get_gateway |
plugin-e2e-outbound |
Probe plugin called gateway/index; returned token query values are redacted. |
send_direct_message |
unit |
Calls direct-message/create. |
Components
| Component | Receive Evidence | Send Evidence | Notes |
|---|---|---|---|
Source |
plugin-e2e-ui |
N/A | KOOK message ID and timestamp are preserved. |
Plain |
plugin-e2e-ui |
plugin-e2e-outbound |
Text and KMarkdown are represented as plain common text. |
At |
plugin-e2e-ui |
plugin-e2e-outbound |
KOOK (met)<id>(met) mentions map to common At. |
AtAll |
unit |
plugin-e2e-outbound |
KOOK (met)all(met) maps to common AtAll; real inbound UI AtAll was not tested. |
Image |
unit |
unit |
URL/image ID based path only; live rendering still needs verification. |
Voice |
unit |
unit |
URL based path only; live rendering still needs verification. |
File |
unit |
unit |
URL based path only; upload API is exposed separately. |
Forward |
unit |
unit |
Outbound forwards are flattened; inbound structured forwards are not exposed by current legacy implementation. |
Unknown |
unit |
N/A | Unsupported KOOK message types become Unknown or PlatformSpecificEvent. |
Acceptance Record
Test date: June 4, 2026.
Plugin E2E verified on June 4, 2026 with EBAEventProbe, SDK standalone runtime, KOOK WebSocket adapter, and a real KOOK channel UI message.
Evidence:
- JSONL:
data/temp/kook_eba_plugin_probe.jsonl - Plugin log:
data/logs/eba-probe-kook.log
Observed and verified:
- A real KOOK UI channel message reached the plugin as
MessageReceivedwithbot_uuid=7ab5b065-6e4e-4def-95f0-3c265366e26f,adapter_name=kook, common sender/group/chat fields, and commonMessageChaincomponents. - KOOK gateway-specific event reached the plugin as
PlatformSpecificEventReceived. - Probe plugin called SDK
send_message; KOOK returned message IDs for text, At, AtAll, image URL/base64 fallback path, quote fallback, file fallback, and flattened forward cases. - Probe plugin called common API methods through the SDK path:
get_message,get_user_info,get_friend_list,get_group_info,get_group_list, andget_group_member_info. - Probe plugin called safe KOOK platform-specific APIs through SDK
call_platform_api:get_current_user,get_user,get_channel,get_gateway, andget_guild.
Run:
uv run pytest tests/unit_tests/platform/test_kook_eba_adapter.py
git diff --check
Blocked or partial items:
plugin-e2e-uiinbound coverage for image, file, voice, AtAll, quote, and forward.plugin-e2e-outboundvisual verification in KOOK UI for image/file/voice rendering. KOOK returned message IDs, but UI inspection was not performed in this run.reply_messageanddelete_messagelive permission verification.- Destructive or permission-sensitive APIs were not declared beyond delete; KOOK mute/kick/leave remain explicit
NotSupportedErrorpaths until a safe fixture is available.