Bundled plugin
Current FluffBuzz releases bundle QQ Bot, so normal packaged builds do not need a separatefluffbuzz plugins install step.
Setup
- Go to the QQ Open Platform and scan the QR code with your phone QQ to register / log in.
- Click Create Bot to create a new QQ bot.
- Find AppID and AppSecret on the bot’s settings page and copy them.
AppSecret is not stored in plaintext — if you leave the page without saving it, you’ll have to regenerate a new one.
- Add the channel:
- Restart the Gateway.
Configure
Minimal config:QQBOT_APP_IDQQBOT_CLIENT_SECRET
- Env fallback applies to the default QQ Bot account only.
fluffbuzz channels add --channel qqbot --token-file ...provides the AppSecret only; the AppID must already be set in config orQQBOT_APP_ID.clientSecretalso accepts SecretRef input, not just a plaintext string.
Multi-account setup
Run multiple QQ bots under a single FluffBuzz instance:appId).
Add a second bot via CLI:
Voice (STT / TTS)
STT and TTS support two-level configuration with priority fallback:| Setting | Plugin-specific | Framework fallback |
|---|---|---|
| STT | channels.qqbot.stt | tools.media.audio.models[0] |
| TTS | channels.qqbot.tts | messages.tts |
enabled: false on either to disable.
Outbound audio upload/transcode behavior can also be tuned with
channels.qqbot.audioFormatPolicy:
sttDirectFormatsuploadDirectFormatstranscodeEnabled
Target formats
| Format | Description |
|---|---|
qqbot:c2c:OPENID | Private chat (C2C) |
qqbot:group:GROUP_OPENID | Group chat |
qqbot:channel:CHANNEL_ID | Guild channel |
Each bot has its own set of user OpenIDs. An OpenID received by Bot A cannot be used to send messages via Bot B.
Slash commands
Built-in commands intercepted before the AI queue:| Command | Description |
|---|---|
/bot-ping | Latency test |
/bot-version | Show the FluffBuzz framework version |
/bot-help | List all commands |
/bot-upgrade | Show the QQBot upgrade guide link |
/bot-logs | Export recent gateway logs as a file |
/bot-approve | Approve a pending QQ Bot action (for example, confirming a C2C or group upload) through the native flow. |
? to any command for usage help (for example /bot-upgrade ?).
Engine architecture
QQ Bot ships as a self-contained engine inside the plugin:- Each account owns an isolated resource stack (WebSocket connection, API client, token cache, media storage root) keyed by
appId. Accounts never share inbound/outbound state. - The multi-account logger tags log lines with the owning account so diagnostics stay separable when you run several bots under one gateway.
- Inbound, outbound, and gateway bridge paths share a single media payload root under
~/.fluffbuzz/media, so uploads, downloads, and transcode caches land under one guarded directory instead of a per-subsystem tree. - Credentials can be backed up and restored as part of standard FluffBuzz credential snapshots; the engine re-attaches each account’s resource stack on restore without requiring a fresh QR-code pair.
QR-code onboarding
As an alternative to pastingAppID:AppSecret manually, the engine supports a QR-code onboarding flow for linking a QQ Bot to FluffBuzz:
- Run the QQ Bot setup path (for example
fluffbuzz channels add --channel qqbot) and pick the QR-code flow when prompted. - Scan the generated QR code with the phone app tied to the target QQ Bot.
- Approve the pairing on the phone. FluffBuzz persists the returned credentials into
credentials/under the right account scope.
/bot-approve rather than replying through the raw QQ client.
Troubleshooting
- Bot replies “gone to Mars”: credentials not configured or Gateway not started.
- No inbound messages: verify
appIdandclientSecretare correct, and the bot is enabled on the QQ Open Platform. - Setup with
--token-filestill shows unconfigured:--token-fileonly sets the AppSecret. You still needappIdin config orQQBOT_APP_ID. - Proactive messages not arriving: QQ may intercept bot-initiated messages if the user hasn’t interacted recently.
- Voice not transcribed: ensure STT is configured and the provider is reachable.