← Back to PRs

#9477: feat(qqbot): add QQ Bot channel extension

by sliverp open 2026-02-05 08:06 View on GitHub →
stale
## Summary This PR adds a new channel extension for **QQ Bot** (QQ Open Platform), enabling OpenClaw to connect with QQ - one of China's largest messaging platforms with **over 600 million monthly active users**. ## Motivation There has been significant community demand for QQ Bot support: - Discussion in Issue #4535: https://github.com/openclaw/openclaw/issues/4535 - Discussion in Issue #3684: https://github.com/openclaw/openclaw/issues/3684 QQ is a dominant messaging platform in China, and this integration would greatly expand OpenClaw's reach to Chinese users. ## Validation & Production Readiness This implementation has been **battle-tested in production**: - **Original plugin repository**: https://github.com/sliverp/qqbot - **217+ stars** - **Production deployment**: Over **24,000+ instances** deployed on Tencent Cloud Lighthouse - **Official recognition**: This plugin has received acknowledgment from the QQ team, and we have committed to **long-term co-maintenance** going forward ## Testing - [x] Tested locally on my OpenClaw instance - [x] Ran `pnpm build && pnpm check && pnpm test` - [x] Extensively tested in production environments (24,000+ deployments) ## Features - WebSocket gateway with QQ Open Platform API integration - Support for text, image, audio, video, and file messages - Group chat and direct message support - Proactive messaging capability with HTTP API server - Cron job support for scheduled messages - Session management with message tracking - Image server for media handling - Interactive onboarding flow for bot configuration - Known users tracking and management ## Changes - `extensions/qqbot/`: Complete QQ Bot channel implementation - `src/config/types.channels.ts`: Add qqbot channel type - `src/config/types.qqbot.ts`: QQ Bot configuration schema ## AI Assistance Disclosure Parts of this code were developed with AI assistance (Claude). The code has been: - **Fully tested** in production across 24,000+ instances - **Reviewed and understood** by me completely - **Iteratively refined** based on real-world usage feedback --- I'm committed to long-term maintenance of this extension and would be happy to address any feedback or requested changes. Thank you for considering this contribution! ### PR Submitted I have submitted a issue for this feature: https://github.com/openclaw/openclaw/issues/9541 Following the contribution guidelines, I'm opening this discussion to: 1. **Get maintainer buy-in** on the approach and implementation 2. **Discuss any concerns** or requirements before merging 3. **Consider breaking into smaller PRs** if the current scope is too large for review I'm fully committed to working with the maintainers to ensure this contribution meets the project's standards. Happy to make any adjustments based on your feedback! Looking forward to your thoughts! <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> Adds a new `qqbot` channel extension under `extensions/qqbot/` (gateway + outbound + onboarding + proactive messaging tooling) and wires it into the top-level channels config typing via `src/config/types.channels.ts` and `src/config/types.qqbot.ts`. Merge blockers found: - `extensions/qqbot/src/channel.ts` defines `messaging` twice in the exported plugin object, so the first block is silently overwritten and behavior differs from what the earlier logic implies (e.g., `c2c:` targets won’t be recognized). - `src/config/types.qqbot.ts` publishes `appSecret`, but the extension reads `clientSecret`/`clientSecretFile`, so credentials provided per the public type will be ignored and auth/configuration will fail at runtime. <h3>Confidence Score: 2/5</h3> - This PR is not safe to merge as-is due to config and plugin-definition bugs that will break qqbot configuration and runtime behavior. - Score reduced because the public QQBot config type does not match the keys actually consumed by the extension (credentials ignored) and because the plugin object defines `messaging` twice, silently overriding logic and breaking target resolution for some IDs. - extensions/qqbot/src/channel.ts; src/config/types.qqbot.ts <!-- greptile_other_comments_section --> <sub>(3/5) Reply to the agent's comments like "Can you suggest a fix for this @greptileai?" or ask follow-up questions!</sub> <!-- /greptile_comment -->

Most Similar PRs