Overview
The QQ Bot adapter uses the Official QQ Bot API to:- Receive messages via a persistent WebSocket connection to the QQ Gateway
- Send text and markdown replies via the REST API
- Download and process images, voice messages, and file attachments
- Transcribe voice messages using Tencent’s built-in ASR or a configurable STT provider
Prerequisites
-
QQ Bot Application — Register at q.qq.com:
- Create a new application and note your App ID and App Secret
- Enable the required intents: C2C messages, Group @-messages, Guild messages
- Configure your bot in sandbox mode for testing, or publish for production
-
Dependencies — The adapter requires
aiohttpandhttpx:
Configuration
Interactive setup
Manual configuration
Set the required environment variables in~/.mibyan/.env:
Environment Variables
Advanced Configuration
For fine-grained control, add platform settings to~/.mibyan/config.yaml:
Voice Messages (STT)
Voice transcription works in two stages:-
QQ built-in ASR (free, always tried first) — QQ provides
asr_refer_textin voice message attachments, which uses Tencent’s own speech recognition -
Configured STT provider (fallback) — If QQ’s ASR doesn’t return text, the adapter calls an OpenAI-compatible STT API:
- Zhipu/GLM (zai): Default provider, uses
glm-asrmodel - OpenAI Whisper: Set
QQ_STT_BASE_URLandQQ_STT_MODEL - Any OpenAI-compatible STT endpoint
- Zhipu/GLM (zai): Default provider, uses
Troubleshooting
Bot disconnects immediately (quick disconnect)
This usually means:- Invalid App ID / Secret — Double-check your credentials at q.qq.com
- Missing permissions — Ensure the bot has the required intents enabled
- Sandbox-only bot — If the bot is in sandbox mode, it can only receive messages from QQ’s sandbox test channel
Voice messages not transcribed
- Check if QQ’s built-in
asr_refer_textis present in the attachment data - If using a custom STT provider, verify
QQ_STT_API_KEYis set correctly - Check gateway logs for STT error messages
Messages not delivered
- Verify the bot’s intents are enabled at q.qq.com
- Check
QQ_ALLOWED_USERSif DM access is restricted - For group messages, ensure the bot is @mentioned (group policy may require allowlisting)
- Check
QQBOT_HOME_CHANNELfor cron/notification delivery
Connection errors
- Ensure
aiohttpandhttpxare installed:python -c "import pm; pm.sync_venv(['messaging'], explicit=True)" - Check network connectivity to
api.sgroup.qq.comand the WebSocket gateway - Review gateway logs for detailed error messages and reconnect behavior

