Skip to content

feat(qq): post-merge hardening + docs for the QQ bot bridge#126

Merged
chauncygu merged 1 commit into
mainfrom
feat/qq-bridge-docs-and-hardening
May 31, 2026
Merged

feat(qq): post-merge hardening + docs for the QQ bot bridge#126
chauncygu merged 1 commit into
mainfrom
feat/qq-bridge-docs-and-hardening

Conversation

@chauncygu
Copy link
Copy Markdown
Contributor

Follow-up to PR #121 (QQ bot bridge via qq-botpy).

Code hardening (bridges/qq.py):

  • Image downloads moved off the async botpy event loop into loop.run_in_executor (new _qq_download_image_b64 helper). A synchronous urlopen in the on_message handler could block the event loop and its WebSocket heartbeat for up to 30s per image, risking a disconnect.
  • cmd_qq now matches the cmd_slack / cmd_telegram secret-handling standard: $QQ_SECRET (recommended) > REPL arg (deprecated; warns + scrubs history)

    config. Env-supplied secrets are never persisted to config.json (the
    original PR wrote qq_secret to disk unconditionally). Adds /qq and /qq logout.

Docs:

  • docs/guides/bridges.md: full QQ Bridge section (prerequisites, $QQ_SECRET setup, how-it-works, features, commands, auto-start); title + "all bridges" references updated.
  • docs/guides/security.md: QQ_SECRET / QQ_APPID env-var rows; bot-token and denylist sections include QQ.
  • .env.example: QQ_APPID / QQ_SECRET.
  • CONTRIBUTING.md: QQ added to the Bridges note (async botpy WebSocket).
  • README.md: QQ in the feature list, comparison table, and bridge tables; News trimmed to the latest 3 one-line entries (details in docs/news.md), with a new QQ release entry added to docs/news.md.

Follow-up to PR #121 (QQ bot bridge via qq-botpy).

Code hardening (bridges/qq.py):
- Image downloads moved off the async botpy event loop into
  loop.run_in_executor (new _qq_download_image_b64 helper). A synchronous
  urlopen in the on_message handler could block the event loop and its
  WebSocket heartbeat for up to 30s per image, risking a disconnect.
- cmd_qq now matches the cmd_slack / cmd_telegram secret-handling standard:
  $QQ_SECRET (recommended) > REPL arg (deprecated; warns + scrubs history)
  > config. Env-supplied secrets are never persisted to config.json (the
  original PR wrote qq_secret to disk unconditionally). Adds /qq <appid>
  and /qq logout.

Docs:
- docs/guides/bridges.md: full QQ Bridge section (prerequisites, $QQ_SECRET
  setup, how-it-works, features, commands, auto-start); title + "all bridges"
  references updated.
- docs/guides/security.md: QQ_SECRET / QQ_APPID env-var rows; bot-token and
  denylist sections include QQ.
- .env.example: QQ_APPID / QQ_SECRET.
- CONTRIBUTING.md: QQ added to the Bridges note (async botpy WebSocket).
- README.md: QQ in the feature list, comparison table, and bridge tables;
  News trimmed to the latest 3 one-line entries (details in docs/news.md),
  with a new QQ release entry added to docs/news.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chauncygu chauncygu merged commit 19ac311 into main May 31, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant