QQ Bot
This is a shipped runtime-backed surface: direct sends are implemented, the reply-loop runtime is implemented, and Loong owns the QQ gateway session directly throughchannels serve qqbot.
At A Glance
| Field | Value |
|---|---|
| Catalog id | qqbot |
| Config key | qqbot |
| Implementation status | runtime_backed |
| Transport | qq_official_bot_gateway_or_plugin_bridge |
| Aliases | qq, qq-bot, tencent-qq |
| Default send target kind | conversation |
| Runtime owner | gateway run or direct channels serve qqbot |
Minimal Config
Smoke Test
QQ Bot [qqbot]appears in the gateway-supervised runtime setchannels serve qqbotstarts a native Loong-owned runtime instead of a managed plugin selection flow- doctor keeps direct send / serve readiness checks visible and actionable
Current Command Surface
| Operation | Current path | Usage or status |
|---|---|---|
| send | channels send qqbot | executes directly against the QQ gateway contract; target contract stays qqbot:<account>:c2c:<openid>, qqbot:<account>:group:<openid>, or qqbot:<account>:channel:<id> |
| serve | channels serve qqbot | starts the native Loong-owned QQ gateway reply loop |
| health check | loong doctor | current readiness and remediation surface |
| inventory | loong channels | current operator inventory surface |
Required Fields For Send
| Requirement | Config paths | Env pointer paths | Default env |
|---|---|---|---|
| channel enabled | qqbot.enabledqqbot.accounts.<account>.enabled | none | none |
| qq bot app id | qqbot.app_idqqbot.accounts.<account>.app_id | qqbot.app_id_envqqbot.accounts.<account>.app_id_env | QQBOT_APP_ID |
| qq bot client secret | qqbot.client_secretqqbot.accounts.<account>.client_secret | qqbot.client_secret_envqqbot.accounts.<account>.client_secret_env | QQBOT_CLIENT_SECRET |
Required Fields For Serve
| Requirement | Config paths | Env pointer paths | Default env |
|---|---|---|---|
| channel enabled | qqbot.enabledqqbot.accounts.<account>.enabled | none | none |
| qq bot app id | qqbot.app_idqqbot.accounts.<account>.app_id | qqbot.app_id_envqqbot.accounts.<account>.app_id_env | QQBOT_APP_ID |
| qq bot client secret | qqbot.client_secretqqbot.accounts.<account>.client_secret | qqbot.client_secret_envqqbot.accounts.<account>.client_secret_env | QQBOT_CLIENT_SECRET |
| allowed peer ids | qqbot.allowed_peer_idsqqbot.accounts.<account>.allowed_peer_ids | none | none |
Stable Target Templates
| Target | Meaning |
|---|---|
qqbot:<account>:c2c:<openid> | direct message openid |
qqbot:<account>:group:<openid> | group openid |
qqbot:<account>:channel:<id> | guild channel id |
Account Scope Note
QQ Bot openids are scoped to the selected account. Keep account ids stable so route meaning does not drift when you rotate gateway credentials or bridge implementations.Runtime Notes
- QQ Bot no longer depends on managed bridge discovery for its main shipped runtime path.
- The native runtime uses the configured QQ gateway credentials directly.
Gateway And Ownership
This surface can run directly throughchannels serve qqbot, or under Gateway And Supervision when the QQ Bot lane should join a larger supervised runtime set.
Operator Notes
- Keep
allowed_peer_idsexplicit and narrow. - Loong validates
allowed_peer_idslocally before forwarding a QQ send, so a mistyped openid is rejected before it reaches the upstream gateway. channels serve qqbotowns the runtime loop directly; failures belong to the native runtime path instead of an external managed-plugin selection layer.- Treat QQ Bot as a multi-account surface from the start if you expect separate direct, group, or guild identities.
Related Docs
- Continue to Weixin for the WeChat bridge-first lane.
- Continue to OneBot when the upstream bridge already speaks OneBot v11.
- Continue to Gateway And Supervision when QQ Bot should join a longer-lived supervised runtime.
- Continue to Channel Setup for the shared public setup contract.