@cxyhhhhh/openclaw-qqbot 1.7.1-dev.202606041635 → 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -46
- package/README.zh.md +1 -46
- package/dist/index.cjs +15271 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +862 -0
- package/index.ts +55 -18
- package/openclaw.plugin.json +9 -3
- package/package.json +13 -20
- package/preload.cjs +17 -14
- package/scripts/upgrade-via-npm.sh +1 -1
- package/scripts/upgrade-via-source.sh +4 -4
- package/src/bot-instance.ts +60 -0
- package/src/channel.ts +151 -419
- package/src/commands/bot-approve.ts +143 -0
- package/src/commands/bot-clear-storage.ts +114 -0
- package/src/commands/bot-group-always.ts +62 -0
- package/src/commands/bot-help.ts +40 -0
- package/src/commands/bot-logs.ts +246 -0
- package/src/commands/bot-me.ts +18 -0
- package/src/commands/bot-pairing.ts +57 -0
- package/src/commands/bot-ping.ts +33 -0
- package/src/commands/bot-streaming.ts +52 -0
- package/src/commands/bot-upgrade.ts +56 -0
- package/src/commands/bot-version.ts +41 -0
- package/src/commands/config-util.ts +96 -0
- package/src/commands/index.ts +49 -0
- package/src/config.ts +22 -17
- package/src/dispatch/body-assembler.ts +319 -0
- package/src/dispatch/dispatch.ts +330 -0
- package/src/dispatch/envelope-builder.ts +112 -0
- package/src/dispatch/index.ts +2 -0
- package/src/{approval-handler.ts → features/approval-handler.ts} +40 -94
- package/src/features/approval-utils.ts +45 -0
- package/src/{credential-backup.ts → features/credential-backup.ts} +13 -15
- package/src/features/history-store.ts +14 -0
- package/src/features/msgid-cache.ts +55 -0
- package/src/features/onboarding.ts +38 -0
- package/src/{proactive.ts → features/proactive.ts} +68 -49
- package/src/features/ref-index-store.ts +282 -0
- package/src/{update-checker.ts → features/update-checker.ts} +15 -35
- package/src/gateway/event-handlers.ts +209 -0
- package/src/gateway/index.ts +3 -0
- package/src/gateway/lifecycle.ts +221 -0
- package/src/gateway/middleware-setup.ts +119 -0
- package/src/gateway/qqbot-gateway.ts +308 -0
- package/src/middleware/access-control.ts +130 -0
- package/src/middleware/attachment.ts +314 -0
- package/src/middleware/policy-injector.ts +66 -0
- package/src/openclaw-plugin-sdk.d.ts +24 -10
- package/src/outbound/cron-scheduler.ts +129 -0
- package/src/outbound/debounce.ts +102 -0
- package/src/outbound/deliver-pipeline.ts +198 -0
- package/src/outbound/image-size.ts +117 -0
- package/src/outbound/index.ts +3 -0
- package/src/outbound/local-file-router.ts +120 -0
- package/src/outbound/media-send.ts +306 -0
- package/src/outbound/outbound-service.ts +256 -0
- package/src/outbound/reply-limiter.ts +128 -0
- package/src/outbound/streaming-controller.ts +211 -0
- package/src/outbound/target.ts +63 -0
- package/src/outbound/tts-provider.ts +84 -0
- package/src/request-context.ts +9 -8
- package/src/runtime-adapter/contract-check.ts +72 -0
- package/src/runtime-adapter/gateway-runtime.ts +62 -0
- package/src/runtime-adapter/index.ts +15 -0
- package/src/runtime-adapter/lint-runtime-access.ts +144 -0
- package/src/runtime-adapter/pairing-runtime.ts +99 -0
- package/src/runtime-adapter/resolve.ts +290 -0
- package/src/runtime-adapter/webhook-adapter.ts +248 -0
- package/src/runtime.ts +28 -5
- package/src/setup/finalize.ts +110 -0
- package/src/setup/surface.ts +33 -0
- package/src/tools/channel.ts +41 -170
- package/src/tools/remind.ts +1 -1
- package/src/types-augment.d.ts +54 -0
- package/src/types.ts +46 -24
- package/src/utils/mention.ts +52 -0
- package/src/utils/pkg-version.ts +22 -5
- package/src/utils/platform.ts +3 -1
- package/src/utils/plugin-logger.ts +104 -0
- package/src/utils/stt.ts +137 -0
- package/src/utils/voice-text.ts +61 -0
- package/tsconfig.json +2 -1
- package/tsup.config.ts +37 -0
- package/dist/index.d.ts +0 -18
- package/dist/index.js +0 -27
- package/dist/src/admin-resolver.d.ts +0 -33
- package/dist/src/admin-resolver.js +0 -157
- package/dist/src/api.d.ts +0 -309
- package/dist/src/api.js +0 -911
- package/dist/src/approval-handler.d.ts +0 -47
- package/dist/src/approval-handler.js +0 -372
- package/dist/src/channel.d.ts +0 -29
- package/dist/src/channel.js +0 -528
- package/dist/src/config.d.ts +0 -56
- package/dist/src/config.js +0 -280
- package/dist/src/credential-backup.d.ts +0 -31
- package/dist/src/credential-backup.js +0 -66
- package/dist/src/deliver-debounce.d.ts +0 -74
- package/dist/src/deliver-debounce.js +0 -174
- package/dist/src/gateway.d.ts +0 -18
- package/dist/src/gateway.js +0 -2025
- package/dist/src/group-history.d.ts +0 -136
- package/dist/src/group-history.js +0 -226
- package/dist/src/image-server.d.ts +0 -87
- package/dist/src/image-server.js +0 -570
- package/dist/src/inbound-attachments.d.ts +0 -60
- package/dist/src/inbound-attachments.js +0 -248
- package/dist/src/known-users.d.ts +0 -100
- package/dist/src/known-users.js +0 -263
- package/dist/src/message-gating.d.ts +0 -53
- package/dist/src/message-gating.js +0 -107
- package/dist/src/message-queue.d.ts +0 -91
- package/dist/src/message-queue.js +0 -257
- package/dist/src/onboarding.d.ts +0 -10
- package/dist/src/onboarding.js +0 -203
- package/dist/src/outbound-deliver.d.ts +0 -48
- package/dist/src/outbound-deliver.js +0 -392
- package/dist/src/outbound.d.ts +0 -220
- package/dist/src/outbound.js +0 -975
- package/dist/src/proactive.d.ts +0 -170
- package/dist/src/proactive.js +0 -399
- package/dist/src/ref-index-store.d.ts +0 -101
- package/dist/src/ref-index-store.js +0 -298
- package/dist/src/reply-dispatcher.d.ts +0 -35
- package/dist/src/reply-dispatcher.js +0 -311
- package/dist/src/request-context.d.ts +0 -25
- package/dist/src/request-context.js +0 -37
- package/dist/src/runtime.d.ts +0 -3
- package/dist/src/runtime.js +0 -13
- package/dist/src/session-store.d.ts +0 -52
- package/dist/src/session-store.js +0 -254
- package/dist/src/slash-commands.d.ts +0 -82
- package/dist/src/slash-commands.js +0 -2218
- package/dist/src/startup-greeting.d.ts +0 -30
- package/dist/src/startup-greeting.js +0 -97
- package/dist/src/streaming.d.ts +0 -247
- package/dist/src/streaming.js +0 -899
- package/dist/src/stt.d.ts +0 -21
- package/dist/src/stt.js +0 -70
- package/dist/src/tools/channel.d.ts +0 -16
- package/dist/src/tools/channel.js +0 -232
- package/dist/src/tools/remind.d.ts +0 -2
- package/dist/src/tools/remind.js +0 -256
- package/dist/src/transport/index.d.ts +0 -10
- package/dist/src/transport/index.js +0 -9
- package/dist/src/transport/webhook-transport.d.ts +0 -67
- package/dist/src/transport/webhook-transport.js +0 -245
- package/dist/src/transport/webhook-verify.d.ts +0 -48
- package/dist/src/transport/webhook-verify.js +0 -98
- package/dist/src/types.d.ts +0 -460
- package/dist/src/types.js +0 -22
- package/dist/src/typing-keepalive.d.ts +0 -27
- package/dist/src/typing-keepalive.js +0 -64
- package/dist/src/update-checker.d.ts +0 -36
- package/dist/src/update-checker.js +0 -171
- package/dist/src/utils/audio-convert.d.ts +0 -98
- package/dist/src/utils/audio-convert.js +0 -783
- package/dist/src/utils/chunked-upload.d.ts +0 -68
- package/dist/src/utils/chunked-upload.js +0 -341
- package/dist/src/utils/file-utils.d.ts +0 -61
- package/dist/src/utils/file-utils.js +0 -172
- package/dist/src/utils/image-size.d.ts +0 -51
- package/dist/src/utils/image-size.js +0 -234
- package/dist/src/utils/media-send.d.ts +0 -158
- package/dist/src/utils/media-send.js +0 -502
- package/dist/src/utils/media-tags.d.ts +0 -14
- package/dist/src/utils/media-tags.js +0 -165
- package/dist/src/utils/payload.d.ts +0 -112
- package/dist/src/utils/payload.js +0 -186
- package/dist/src/utils/pkg-version.d.ts +0 -5
- package/dist/src/utils/pkg-version.js +0 -61
- package/dist/src/utils/platform.d.ts +0 -137
- package/dist/src/utils/platform.js +0 -390
- package/dist/src/utils/ssrf-guard.d.ts +0 -25
- package/dist/src/utils/ssrf-guard.js +0 -91
- package/dist/src/utils/text-parsing.d.ts +0 -31
- package/dist/src/utils/text-parsing.js +0 -74
- package/dist/src/utils/upload-cache.d.ts +0 -34
- package/dist/src/utils/upload-cache.js +0 -93
- package/node_modules/@eshaz/web-worker/LICENSE +0 -201
- package/node_modules/@eshaz/web-worker/README.md +0 -134
- package/node_modules/@eshaz/web-worker/browser.js +0 -17
- package/node_modules/@eshaz/web-worker/cjs/browser.js +0 -16
- package/node_modules/@eshaz/web-worker/cjs/node.js +0 -219
- package/node_modules/@eshaz/web-worker/index.d.ts +0 -4
- package/node_modules/@eshaz/web-worker/node.js +0 -223
- package/node_modules/@eshaz/web-worker/package.json +0 -54
- package/node_modules/@wasm-audio-decoders/common/index.js +0 -5
- package/node_modules/@wasm-audio-decoders/common/package.json +0 -36
- package/node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js +0 -231
- package/node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js +0 -129
- package/node_modules/@wasm-audio-decoders/common/src/puff/README +0 -67
- package/node_modules/@wasm-audio-decoders/common/src/puff/build_puff.js +0 -31
- package/node_modules/@wasm-audio-decoders/common/src/puff/puff.c +0 -863
- package/node_modules/@wasm-audio-decoders/common/src/puff/puff.h +0 -35
- package/node_modules/@wasm-audio-decoders/common/src/utilities.js +0 -3
- package/node_modules/@wasm-audio-decoders/common/types.d.ts +0 -7
- package/node_modules/mpg123-decoder/README.md +0 -265
- package/node_modules/mpg123-decoder/dist/mpg123-decoder.min.js +0 -185
- package/node_modules/mpg123-decoder/dist/mpg123-decoder.min.js.map +0 -1
- package/node_modules/mpg123-decoder/index.js +0 -8
- package/node_modules/mpg123-decoder/package.json +0 -58
- package/node_modules/mpg123-decoder/src/EmscriptenWasm.js +0 -464
- package/node_modules/mpg123-decoder/src/MPEGDecoder.js +0 -200
- package/node_modules/mpg123-decoder/src/MPEGDecoderWebWorker.js +0 -21
- package/node_modules/mpg123-decoder/types.d.ts +0 -30
- package/node_modules/silk-wasm/LICENSE +0 -21
- package/node_modules/silk-wasm/README.md +0 -85
- package/node_modules/silk-wasm/lib/index.cjs +0 -16
- package/node_modules/silk-wasm/lib/index.d.ts +0 -70
- package/node_modules/silk-wasm/lib/index.mjs +0 -16
- package/node_modules/silk-wasm/lib/silk.wasm +0 -0
- package/node_modules/silk-wasm/lib/utils.d.ts +0 -4
- package/node_modules/silk-wasm/package.json +0 -39
- package/node_modules/simple-yenc/.github/FUNDING.yml +0 -1
- package/node_modules/simple-yenc/.prettierignore +0 -1
- package/node_modules/simple-yenc/LICENSE +0 -7
- package/node_modules/simple-yenc/README.md +0 -163
- package/node_modules/simple-yenc/dist/esm.js +0 -1
- package/node_modules/simple-yenc/dist/index.js +0 -1
- package/node_modules/simple-yenc/package.json +0 -50
- package/node_modules/simple-yenc/rollup.config.js +0 -27
- package/node_modules/simple-yenc/src/simple-yenc.js +0 -302
- package/node_modules/ws/LICENSE +0 -20
- package/node_modules/ws/README.md +0 -548
- package/node_modules/ws/browser.js +0 -8
- package/node_modules/ws/index.js +0 -13
- package/node_modules/ws/lib/buffer-util.js +0 -131
- package/node_modules/ws/lib/constants.js +0 -19
- package/node_modules/ws/lib/event-target.js +0 -292
- package/node_modules/ws/lib/extension.js +0 -203
- package/node_modules/ws/lib/limiter.js +0 -55
- package/node_modules/ws/lib/permessage-deflate.js +0 -528
- package/node_modules/ws/lib/receiver.js +0 -706
- package/node_modules/ws/lib/sender.js +0 -602
- package/node_modules/ws/lib/stream.js +0 -161
- package/node_modules/ws/lib/subprotocol.js +0 -62
- package/node_modules/ws/lib/validation.js +0 -152
- package/node_modules/ws/lib/websocket-server.js +0 -554
- package/node_modules/ws/lib/websocket.js +0 -1393
- package/node_modules/ws/package.json +0 -69
- package/node_modules/ws/wrapper.mjs +0 -8
- package/skills/qqbot-media/SKILL.md +0 -60
- package/src/admin-resolver.ts +0 -181
- package/src/api.ts +0 -1320
- package/src/deliver-debounce.ts +0 -229
- package/src/gateway.ts +0 -2272
- package/src/group-history.ts +0 -328
- package/src/image-server.ts +0 -675
- package/src/inbound-attachments.ts +0 -321
- package/src/known-users.ts +0 -353
- package/src/message-gating.ts +0 -190
- package/src/message-queue.ts +0 -354
- package/src/onboarding.ts +0 -274
- package/src/outbound-deliver.ts +0 -486
- package/src/outbound.ts +0 -1179
- package/src/ref-index-store.ts +0 -412
- package/src/reply-dispatcher.ts +0 -334
- package/src/session-store.ts +0 -303
- package/src/slash-commands.ts +0 -2413
- package/src/startup-greeting.ts +0 -120
- package/src/streaming.ts +0 -1077
- package/src/stt.ts +0 -86
- package/src/transport/index.ts +0 -11
- package/src/transport/webhook-transport.ts +0 -332
- package/src/transport/webhook-verify.ts +0 -119
- package/src/typing-keepalive.ts +0 -59
- package/src/typings/openclaw-webhook-ingress.d.ts +0 -66
- package/src/utils/audio-convert.ts +0 -887
- package/src/utils/chunked-upload.ts +0 -483
- package/src/utils/file-utils.ts +0 -193
- package/src/utils/image-size.ts +0 -266
- package/src/utils/media-send.ts +0 -636
- package/src/utils/media-tags.ts +0 -183
- package/src/utils/payload.ts +0 -265
- package/src/utils/text-parsing.ts +0 -85
- package/src/utils/upload-cache.ts +0 -128
package/README.md
CHANGED
|
@@ -37,7 +37,6 @@ Scan to join the QQ group chat
|
|
|
37
37
|
| Feature | Description |
|
|
38
38
|
|---------|-------------|
|
|
39
39
|
| 🔒 **Multi-Scene** | C2C private chat, group @messages |
|
|
40
|
-
| 🌐 **Dual Transport** | WebSocket (default) or Webhook (HTTP callback) — switch via config |
|
|
41
40
|
| 🖼️ **Rich Media** | Send & receive images, voice, video, and files |
|
|
42
41
|
| 🎙️ **Voice (STT/TTS)** | Speech-to-text transcription & text-to-speech replies |
|
|
43
42
|
| 🔥 **One-Click Hot Upgrade** | Send `/bot-upgrade` in private chat to upgrade — no server login needed |
|
|
@@ -409,56 +408,12 @@ openclaw message send --channel "qqbot" \
|
|
|
409
408
|
|
|
410
409
|
#### How It Works
|
|
411
410
|
|
|
412
|
-
- When `openclaw gateway` starts, all accounts with `enabled: true` launch their own
|
|
411
|
+
- When `openclaw gateway` starts, all accounts with `enabled: true` launch their own WebSocket connections
|
|
413
412
|
- Each account maintains an independent Token cache (isolated by `appId`), preventing cross-contamination
|
|
414
413
|
- Incoming message logs are prefixed with `[qqbot:accountId]` for easy debugging
|
|
415
414
|
|
|
416
415
|
---
|
|
417
416
|
|
|
418
|
-
### Webhook Transport Mode
|
|
419
|
-
|
|
420
|
-
By default, the plugin connects to QQ via **WebSocket** (outbound connection, no public IP required). You can switch to **Webhook** mode where QQ platform POSTs events to your HTTP endpoint.
|
|
421
|
-
|
|
422
|
-
| | WebSocket (default) | Webhook |
|
|
423
|
-
|---|---|---|
|
|
424
|
-
| Connection | Plugin connects to QQ gateway | QQ platform POSTs to your server |
|
|
425
|
-
| Public IP | Not required | Required |
|
|
426
|
-
| Use case | Development, single instance | Production, horizontal scaling, Serverless |
|
|
427
|
-
| Session resume | Supported (RESUME) | Stateless, no resume needed |
|
|
428
|
-
| Signature | Built-in | Ed25519 auto-verified by plugin |
|
|
429
|
-
|
|
430
|
-
#### Configuration
|
|
431
|
-
|
|
432
|
-
```json
|
|
433
|
-
{
|
|
434
|
-
"channels": {
|
|
435
|
-
"qqbot": {
|
|
436
|
-
"appId": "111111111",
|
|
437
|
-
"clientSecret": "your-secret",
|
|
438
|
-
"transport": "webhook",
|
|
439
|
-
"webhook": {
|
|
440
|
-
"path": "/qqbot/webhook"
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
```
|
|
446
|
-
|
|
447
|
-
| Field | Default | Description |
|
|
448
|
-
|-------|---------|-------------|
|
|
449
|
-
| `transport` | `"websocket"` | `"websocket"` or `"webhook"` |
|
|
450
|
-
| `webhook.path` | `"/qqbot/webhook"` | HTTP path for receiving callbacks |
|
|
451
|
-
|
|
452
|
-
#### Platform Setup
|
|
453
|
-
|
|
454
|
-
1. Go to [QQ Open Platform](https://q.qq.com/) → Bot Settings → Message Receiving
|
|
455
|
-
2. Select **HTTP Callback**
|
|
456
|
-
3. Enter your callback URL: `https://your-domain.com/qqbot/webhook`
|
|
457
|
-
4. The platform sends an `op:13` validation request — the plugin handles it automatically
|
|
458
|
-
5. Once validated, all events will be POSTed to your endpoint
|
|
459
|
-
|
|
460
|
-
---
|
|
461
|
-
|
|
462
417
|
### Voice Configuration (STT / TTS)
|
|
463
418
|
|
|
464
419
|
#### STT (Speech-to-Text) — Transcribe Incoming Voice Messages
|
package/README.zh.md
CHANGED
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
| 功能 | 说明 |
|
|
33
33
|
|------|------|
|
|
34
34
|
| 🔒 **多场景支持** | C2C 私聊、群聊 @消息 |
|
|
35
|
-
| 🌐 **双传输模式** | WebSocket(默认)或 Webhook(HTTP 回调)— 配置切换 |
|
|
36
35
|
| 🖼️ **富媒体消息** | 支持图片、语音、视频、文件的收发 |
|
|
37
36
|
| 🎙️ **语音能力 (STT/TTS)** | 语音转文字自动转录 & 文字转语音回复 |
|
|
38
37
|
| 🔥 **一键热更新** | 私聊发送 `/bot-upgrade` 即可完成版本升级,无需登录服务器 |
|
|
@@ -404,56 +403,12 @@ openclaw message send --channel "qqbot" \
|
|
|
404
403
|
|
|
405
404
|
#### 工作原理
|
|
406
405
|
|
|
407
|
-
- 启动 `openclaw gateway` 后,所有 `enabled: true`
|
|
406
|
+
- 启动 `openclaw gateway` 后,所有 `enabled: true` 的账户会同时启动 WebSocket 连接
|
|
408
407
|
- 每个账户独立维护 Token 缓存(基于 `appId` 隔离),互不干扰
|
|
409
408
|
- 接收消息时,日志会带上 `[qqbot:accountId]` 前缀方便排查
|
|
410
409
|
|
|
411
410
|
---
|
|
412
411
|
|
|
413
|
-
### Webhook 传输模式
|
|
414
|
-
|
|
415
|
-
默认情况下,插件通过 **WebSocket** 连接 QQ 平台(出站连接,无需公网 IP)。你也可以切换为 **Webhook** 模式,由 QQ 平台主动 POST 事件到你的 HTTP 端点。
|
|
416
|
-
|
|
417
|
-
| | WebSocket(默认) | Webhook |
|
|
418
|
-
|---|---|---|
|
|
419
|
-
| 连接方式 | 插件主动连接 QQ 网关 | QQ 平台 POST 到你的服务器 |
|
|
420
|
-
| 公网 IP | 不需要 | 需要 |
|
|
421
|
-
| 适用场景 | 开发调试、单实例部署 | 生产环境、水平扩展、Serverless |
|
|
422
|
-
| 会话恢复 | 支持 RESUME | 无状态,无需恢复 |
|
|
423
|
-
| 签名验证 | 平台内置 | 插件自动 Ed25519 验签 |
|
|
424
|
-
|
|
425
|
-
#### 配置方式
|
|
426
|
-
|
|
427
|
-
```json
|
|
428
|
-
{
|
|
429
|
-
"channels": {
|
|
430
|
-
"qqbot": {
|
|
431
|
-
"appId": "111111111",
|
|
432
|
-
"clientSecret": "your-secret",
|
|
433
|
-
"transport": "webhook",
|
|
434
|
-
"webhook": {
|
|
435
|
-
"path": "/qqbot/webhook"
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
| 字段 | 默认值 | 说明 |
|
|
443
|
-
|------|--------|------|
|
|
444
|
-
| `transport` | `"websocket"` | `"websocket"` 或 `"webhook"` |
|
|
445
|
-
| `webhook.path` | `"/qqbot/webhook"` | 接收回调的 HTTP 路径 |
|
|
446
|
-
|
|
447
|
-
#### 平台配置步骤
|
|
448
|
-
|
|
449
|
-
1. 登录 [QQ 开放平台](https://q.qq.com/) → 开发设置 → 消息接收方式
|
|
450
|
-
2. 选择 **HTTP 回调**
|
|
451
|
-
3. 填写回调 URL:`https://your-domain.com/qqbot/webhook`
|
|
452
|
-
4. 平台发送 `op:13` 验证请求,插件自动处理签名验证
|
|
453
|
-
5. 验证通过后,所有事件将以 POST 方式推送到该地址
|
|
454
|
-
|
|
455
|
-
---
|
|
456
|
-
|
|
457
412
|
### 语音能力配置(STT / TTS)
|
|
458
413
|
|
|
459
414
|
#### STT(语音转文字)— 自动转录用户发来的语音消息
|