
Product
Introducing Reports: An Extensible Reporting Framework for Socket Data
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.
openclaw-qqbot
Advanced tools
Connect your AI assistant to QQ — private chat, group chat, and rich media, all in one plugin.
简体中文 | English
Scan to join the QQ group chat
| Feature | Description |
|---|---|
| 🔒 Multi-Scene | C2C private chat, group @messages, channel messages, channel DMs |
| 🖼️ Rich Media | Send & receive images, voice, video, and files |
| 🎙️ Voice (STT/TTS) | Speech-to-text transcription & text-to-speech replies |
| ⏰ Scheduled Push | Proactive message delivery via scheduled tasks |
| 🔗 URL Support | Direct URL sending in private chat (no restrictions) |
| ⌨️ Typing Indicator | "Bot is typing..." status shown in real-time |
| 🔄 Hot Reload | Install via npm with seamless hot updates |
| 📝 Markdown | Full Markdown formatting support |
| 🛠️ Commands | Native OpenClaw command integration |
Note: This plugin serves as a message channel only — it relays messages between QQ and OpenClaw. Capabilities like image understanding, voice transcription, drawing, etc. depend on the AI model you configure and the skills installed in OpenClaw, not on this plugin itself.
With STT configured, the plugin automatically transcribes voice messages to text before passing them to AI. The whole process is transparent to the user — sending voice feels as natural as sending text.
You: (send a voice message) "What's the weather like tomorrow in Shenzhen?"
QQBot: Tomorrow (March 7, Saturday) Shenzhen weather forecast 🌤️ ...
Send any file to the bot — novels, reports, spreadsheets — AI automatically recognizes the content and gives an intelligent reply.
You: (send a TXT file of "War and Peace")
QQBot: Got it! You uploaded the Chinese version of "War and Peace" by Leo Tolstoy. This appears to be the opening of Chapter 1...
If your main model supports vision (e.g. Tencent Hunyuan hunyuan-vision), AI can understand images too. This is a general multimodal capability, not plugin-specific.
You: (send an image)
QQBot: Haha, so cute! Is that a QQ penguin in a lobster costume? 🦞🐧 ...
You: Draw me a cat
QQBot: Here you go! 🐱
AI sends images via <qqimg>path</qqimg>. Supports local paths and URLs. Formats: jpg/png/gif/webp/bmp.
You: Tell me a joke in voice
QQBot: (sends a voice message)
AI sends voice via <qqvoice>path</qqvoice>. Formats: mp3/wav/silk/ogg. No ffmpeg required.
You: Extract chapter 1 of War and Peace and send it as a file
QQBot: (sends a .txt file)
AI sends files via <qqfile>path</qqfile>. Any format, up to 20MB.
You: Send me a demo video
QQBot: (sends a video)
AI sends videos via <qqvideo>path</qqvideo>. Supports local files and URLs. Large files (>5MB) auto-show upload progress.
| Tag | Direction | Notes |
|---|---|---|
<qqimg>path</qqimg> | Send | jpg/png/gif/webp/bmp, local path or URL |
<qqvoice>path</qqvoice> | Send | mp3/wav/silk/ogg, no ffmpeg required |
<qqfile>path</qqfile> | Send | Any format, up to 20MB |
<qqvideo>path</qqvideo> | Send | Local path or URL |
| Voice / File / Image | Receive | Auto-transcribe (STT), auto-download, or vision analysis |
Under the hood: 30+ tag variant auto-correction, upload dedup caching, ordered queue delivery, and multi-layer audio format fallback.
For a step-by-step walkthrough with screenshots, see the official guide.
⚠️ The bot will automatically appear in your QQ message list and send a first message. However, it will reply "The bot has gone to Mars" until you complete the configuration steps below.
Option A: One-Click Install & Run (Recommended)
git clone https://github.com/tencent-connect/openclaw-qqbot.git && cd openclaw-qqbot
bash ./scripts/upgrade-and-run.sh --appid YOUR_APPID --secret YOUR_SECRET
The script handles everything: cleanup old plugins → install deps → register plugin → configure channel → start service. Once done, skip to Step 4.
Option B: Manual Step-by-Step
git clone https://github.com/tencent-connect/openclaw-qqbot.git && cd openclaw-qqbot
npm install --omit=dev
openclaw plugins install .
Option 1: CLI Wizard (Recommended)
openclaw channels add --channel qqbot --token "AppID:AppSecret"
Option 2: Edit Config File
Edit ~/.openclaw/openclaw.json:
{
"channels": {
"qqbot": {
"enabled": true,
"appId": "Your AppID",
"clientSecret": "Your AppSecret"
}
}
}
openclaw gateway
Open QQ, find your bot, and send a message!
Run multiple QQ bots under a single OpenClaw instance.
Edit ~/.openclaw/openclaw.json and add an accounts field under channels.qqbot:
{
"channels": {
"qqbot": {
"enabled": true,
"appId": "111111111",
"clientSecret": "secret-of-bot-1",
"accounts": {
"bot2": {
"enabled": true,
"appId": "222222222",
"clientSecret": "secret-of-bot-2"
},
"bot3": {
"enabled": true,
"appId": "333333333",
"clientSecret": "secret-of-bot-3"
}
}
}
}
}
Notes:
appId / clientSecret is the default account (accountId = "default")accounts (e.g. bot2, bot3) is the accountId for that botenabled, name, allowFrom, systemPrompt, etc.accountsAdd a second bot via CLI (if the framework supports the --account parameter):
openclaw channels add --channel qqbot --account bot2 --token "222222222:secret-of-bot-2"
When using openclaw message send, specify which bot to use with the --account parameter:
# Send with the default bot (no --account = uses "default")
openclaw message send --channel "qqbot" \
--target "qqbot:c2c:OPENID" \
--message "hello from default bot"
# Send with bot2
openclaw message send --channel "qqbot" \
--account bot2 \
--target "qqbot:c2c:OPENID" \
--message "hello from bot2"
Target Formats:
| Format | Description |
|---|---|
qqbot:c2c:OPENID | Private chat (C2C) |
qqbot:group:GROUP_OPENID | Group chat |
qqbot:channel:CHANNEL_ID | Guild channel |
⚠️ Important: Each bot has its own set of user OpenIDs. An OpenID received by Bot A cannot be used to send messages via Bot B — this will result in a 500 error. Always use the matching bot's
accountIdto send messages to its users.
openclaw gateway starts, all accounts with enabled: true launch their own WebSocket connectionsappId), preventing cross-contamination[qqbot:accountId] for easy debuggingSTT supports two-level configuration with priority fallback:
| Priority | Config Path | Scope |
|---|---|---|
| 1 (highest) | channels.qqbot.stt | Plugin-specific |
| 2 (fallback) | tools.media.audio.models[0] | Framework-level |
{
"channels": {
"qqbot": {
"stt": {
"provider": "your-provider",
"model": "your-stt-model"
}
}
}
}
provider — references a key in models.providers to inherit baseUrl and apiKeyenabled: false to disable| Priority | Config Path | Scope |
|---|---|---|
| 1 (highest) | channels.qqbot.tts | Plugin-specific |
| 2 (fallback) | messages.tts | Framework-level |
{
"channels": {
"qqbot": {
"tts": {
"provider": "your-provider",
"model": "your-tts-model",
"voice": "your-voice"
}
}
}
}
provider — references a key in models.providers to inherit baseUrl and apiKeyvoice — voice variantenabled: false to disable (default: true)<qqvoice> tags to generate and send voice messagesRun the one-click script to upgrade and restart:
bash ./scripts/upgrade-and-run.sh
When no --appid / --secret is provided, the script reads existing config from ~/.openclaw/openclaw.json automatically.
# First-time or override credentials
bash ./scripts/upgrade-and-run.sh --appid YOUR_APPID --secret YOUR_SECRET
| Option | Description |
|---|---|
--appid <id> | QQ Bot AppID |
--secret <secret> | QQ Bot AppSecret |
--markdown <yes|no> | Enable Markdown format (default: no) |
-h, --help | Show help |
Environment variables QQBOT_APPID, QQBOT_SECRET, QQBOT_TOKEN (AppID:Secret) are also supported.
FAQs
Unknown package
We found that openclaw-qqbot demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.