Skip to content

Platform Adapters ​

Adapters connect external platforms to Zhin's common message and Endpoint model. Choose by deployment constraints first, then verify capabilities and support tier. A platform name alone is not enough.

Make the choice first ​

Your constraintPreferRepresentative adapters
Validate the product without a real accountLocal SandboxSandbox
The platform offers an official Bot or App APIOfficial connectionQQ Official, Discord, Telegram, Slack, DingTalk, Lark, WeChat MP
You already operate a protocol bridgeGateway connectionOneBot v11; validate NapCat, Milky, and OneBot v12 yourself
Events originate in a collaboration systemWork-item connectionGitHub (Experimental)
The source is not instant chatNon-chat sourceEmail (Experimental)

Before choosing, confirm credential ownership, inbound delivery mode, required message or member operations, callback reachability, and whether the support tier meets your release bar.

  1. Run npx zhin setup --adapters to select an adapter and generate configuration.
  2. Run pnpm install and pnpm dev; prove the Sandbox golden path first.
  3. In Console, verify inbound traffic under Conversations and Channels, Endpoint operations under Runtime Capabilities, and failures under Logs.
  4. Add the real platform to the same business flow. Commands, components, and middleware should not read a private platform SDK.

Every @zhin.js/adapter-* package has its own page, synchronized with its package README.md. The tier and capability tables below are release facts, not rankings.

For framework-level concepts (multi-platform concurrency, message flow, endpoint lifecycle), see Core Concepts and Endpoint Lifecycle.

Tier SSOT: scripts/adapter-meta.mjs (same source as docs/snippets/platform-tiers.md).

Tiers ​

TierMeaning
StableConsistent with pnpm check:stable and minimal-bot
Platform StablePasses platform acceptance and remains in the check:stable Platform batch; see certified platforms below
AdvancedCommonly used by the test-bot maintainer kitchen sink (not a user template); has integration tests; graduation candidates enter Stable smoke before promotion
ExperimentalUsability varies greatly by deployment; requires self-verification; does not mean untested, just no full CI / real-device guarantee

Stable ​

AdapterPackageEndpoint Management CapabilitiesDocs
Sandbox@zhin.js/adapter-sandbox—Sandbox

Platform Stable ​

(Currently none)

Advanced ​

AdapterPackageEndpoint Management CapabilitiesDocs
DingTalk@zhin.js/adapter-dingtalk—DingTalk
Lark@zhin.js/adapter-lark—Lark
WeChat Official Account@zhin.js/adapter-wechat-mp—WeChat Official Account
Discord@zhin.js/adapter-discord—Discord
ICQQ (QQ)@zhin.js/adapter-icqqlistFriends, listGroups, listChannels, listGroupMembers, approveRequest, rejectRequest, kickGroupMember, muteGroupMember, setGroupAdmin, deleteFriendICQQ (QQ)
KOOK@zhin.js/adapter-kook—KOOK
OneBot v11@zhin.js/adapter-onebot11—OneBot v11
QQ Official@zhin.js/adapter-qqlistChannelsQQ Official
Slack@zhin.js/adapter-slack—Slack
Telegram@zhin.js/adapter-telegram—Telegram

Experimental ​

AdapterPackageEndpoint Management CapabilitiesDocs
WeCom@zhin.js/adapter-wecom—WeCom
WeChat iLink@zhin.js/adapter-weixin-ilink—WeChat iLink
Email@zhin.js/adapter-email—Email
GitHub@zhin.js/adapter-github—GitHub
LINE@zhin.js/adapter-line—LINE
Milky@zhin.js/adapter-milky—Milky
NapCat@zhin.js/adapter-napcat—NapCat
OneBot v12@zhin.js/adapter-onebot12—OneBot v12
Satori@zhin.js/adapter-satori—Satori

Unified message operations ​

Every Endpoint declaring outbound supports sending. Additional message operations use the platform-neutral EndpointControl port and are declared precisely for each concrete Endpoint; Core never probes private platform SDK methods.

OperationIntegrated platforms
recallDiscord, ICQQ, KOOK, Lark, Milky, NapCat, OneBot 11/12, QQ Official, Satori, Slack, Telegram, WeCom
editSlack
reactionDiscord Gateway, ICQQ, Slack
typingWeixin iLink

Connection modes of one adapter may expose different capabilities. For example, Discord Gateway supports reactions while Interactions mode declares recall only. Host and Console clients can read the concrete capability set from operations on each Endpoint row.

Maintenance Notes ​

  • Single source of truth (tiers): scripts/adapter-meta.mjs
  • Single source of truth (content): plugins/adapters/<name>/README.md
  • Sync command: Run pnpm sync:adapter-docs from the repository root
  • CI checks: pnpm check:adapter-docs, pnpm check:platform-tiers-ssot

Source index: plugins/adapters/README.md