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-sandboxSandbox

Platform Stable

(Currently none)

Advanced

AdapterPackageEndpoint Management CapabilitiesDocs
DingTalk@zhin.js/adapter-dingtalkDingTalk
Lark@zhin.js/adapter-larkLark
WeChat Official Account@zhin.js/adapter-wechat-mpWeChat Official Account
Discord@zhin.js/adapter-discordDiscord
ICQQ (QQ)@zhin.js/adapter-icqqlistFriends, listGroups, listChannels, listGroupMembers, approveRequest, rejectRequest, kickGroupMember, muteGroupMember, setGroupAdmin, deleteFriendICQQ (QQ)
KOOK@zhin.js/adapter-kookKOOK
OneBot v11@zhin.js/adapter-onebot11OneBot v11
QQ Official@zhin.js/adapter-qqlistChannelsQQ Official
Slack@zhin.js/adapter-slackSlack
Telegram@zhin.js/adapter-telegramTelegram

Experimental

AdapterPackageEndpoint Management CapabilitiesDocs
WeCom@zhin.js/adapter-wecomWeCom
WeChat iLink@zhin.js/adapter-weixin-ilinkWeChat iLink
Email@zhin.js/adapter-emailEmail
GitHub@zhin.js/adapter-githubGitHub
LINE@zhin.js/adapter-lineLINE
Milky@zhin.js/adapter-milkyMilky
NapCat@zhin.js/adapter-napcatNapCat
OneBot v12@zhin.js/adapter-onebot12OneBot v12
Satori@zhin.js/adapter-satoriSatori

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