@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.
Files changed (278) hide show
  1. package/README.md +1 -46
  2. package/README.zh.md +1 -46
  3. package/dist/index.cjs +15271 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +862 -0
  6. package/index.ts +55 -18
  7. package/openclaw.plugin.json +9 -3
  8. package/package.json +13 -20
  9. package/preload.cjs +17 -14
  10. package/scripts/upgrade-via-npm.sh +1 -1
  11. package/scripts/upgrade-via-source.sh +4 -4
  12. package/src/bot-instance.ts +60 -0
  13. package/src/channel.ts +151 -419
  14. package/src/commands/bot-approve.ts +143 -0
  15. package/src/commands/bot-clear-storage.ts +114 -0
  16. package/src/commands/bot-group-always.ts +62 -0
  17. package/src/commands/bot-help.ts +40 -0
  18. package/src/commands/bot-logs.ts +246 -0
  19. package/src/commands/bot-me.ts +18 -0
  20. package/src/commands/bot-pairing.ts +57 -0
  21. package/src/commands/bot-ping.ts +33 -0
  22. package/src/commands/bot-streaming.ts +52 -0
  23. package/src/commands/bot-upgrade.ts +56 -0
  24. package/src/commands/bot-version.ts +41 -0
  25. package/src/commands/config-util.ts +96 -0
  26. package/src/commands/index.ts +49 -0
  27. package/src/config.ts +22 -17
  28. package/src/dispatch/body-assembler.ts +319 -0
  29. package/src/dispatch/dispatch.ts +330 -0
  30. package/src/dispatch/envelope-builder.ts +112 -0
  31. package/src/dispatch/index.ts +2 -0
  32. package/src/{approval-handler.ts → features/approval-handler.ts} +40 -94
  33. package/src/features/approval-utils.ts +45 -0
  34. package/src/{credential-backup.ts → features/credential-backup.ts} +13 -15
  35. package/src/features/history-store.ts +14 -0
  36. package/src/features/msgid-cache.ts +55 -0
  37. package/src/features/onboarding.ts +38 -0
  38. package/src/{proactive.ts → features/proactive.ts} +68 -49
  39. package/src/features/ref-index-store.ts +282 -0
  40. package/src/{update-checker.ts → features/update-checker.ts} +15 -35
  41. package/src/gateway/event-handlers.ts +209 -0
  42. package/src/gateway/index.ts +3 -0
  43. package/src/gateway/lifecycle.ts +221 -0
  44. package/src/gateway/middleware-setup.ts +119 -0
  45. package/src/gateway/qqbot-gateway.ts +308 -0
  46. package/src/middleware/access-control.ts +130 -0
  47. package/src/middleware/attachment.ts +314 -0
  48. package/src/middleware/policy-injector.ts +66 -0
  49. package/src/openclaw-plugin-sdk.d.ts +24 -10
  50. package/src/outbound/cron-scheduler.ts +129 -0
  51. package/src/outbound/debounce.ts +102 -0
  52. package/src/outbound/deliver-pipeline.ts +198 -0
  53. package/src/outbound/image-size.ts +117 -0
  54. package/src/outbound/index.ts +3 -0
  55. package/src/outbound/local-file-router.ts +120 -0
  56. package/src/outbound/media-send.ts +306 -0
  57. package/src/outbound/outbound-service.ts +256 -0
  58. package/src/outbound/reply-limiter.ts +128 -0
  59. package/src/outbound/streaming-controller.ts +211 -0
  60. package/src/outbound/target.ts +63 -0
  61. package/src/outbound/tts-provider.ts +84 -0
  62. package/src/request-context.ts +9 -8
  63. package/src/runtime-adapter/contract-check.ts +72 -0
  64. package/src/runtime-adapter/gateway-runtime.ts +62 -0
  65. package/src/runtime-adapter/index.ts +15 -0
  66. package/src/runtime-adapter/lint-runtime-access.ts +144 -0
  67. package/src/runtime-adapter/pairing-runtime.ts +99 -0
  68. package/src/runtime-adapter/resolve.ts +290 -0
  69. package/src/runtime-adapter/webhook-adapter.ts +248 -0
  70. package/src/runtime.ts +28 -5
  71. package/src/setup/finalize.ts +110 -0
  72. package/src/setup/surface.ts +33 -0
  73. package/src/tools/channel.ts +41 -170
  74. package/src/tools/remind.ts +1 -1
  75. package/src/types-augment.d.ts +54 -0
  76. package/src/types.ts +46 -24
  77. package/src/utils/mention.ts +52 -0
  78. package/src/utils/pkg-version.ts +22 -5
  79. package/src/utils/platform.ts +3 -1
  80. package/src/utils/plugin-logger.ts +104 -0
  81. package/src/utils/stt.ts +137 -0
  82. package/src/utils/voice-text.ts +61 -0
  83. package/tsconfig.json +2 -1
  84. package/tsup.config.ts +37 -0
  85. package/dist/index.d.ts +0 -18
  86. package/dist/index.js +0 -27
  87. package/dist/src/admin-resolver.d.ts +0 -33
  88. package/dist/src/admin-resolver.js +0 -157
  89. package/dist/src/api.d.ts +0 -309
  90. package/dist/src/api.js +0 -911
  91. package/dist/src/approval-handler.d.ts +0 -47
  92. package/dist/src/approval-handler.js +0 -372
  93. package/dist/src/channel.d.ts +0 -29
  94. package/dist/src/channel.js +0 -528
  95. package/dist/src/config.d.ts +0 -56
  96. package/dist/src/config.js +0 -280
  97. package/dist/src/credential-backup.d.ts +0 -31
  98. package/dist/src/credential-backup.js +0 -66
  99. package/dist/src/deliver-debounce.d.ts +0 -74
  100. package/dist/src/deliver-debounce.js +0 -174
  101. package/dist/src/gateway.d.ts +0 -18
  102. package/dist/src/gateway.js +0 -2025
  103. package/dist/src/group-history.d.ts +0 -136
  104. package/dist/src/group-history.js +0 -226
  105. package/dist/src/image-server.d.ts +0 -87
  106. package/dist/src/image-server.js +0 -570
  107. package/dist/src/inbound-attachments.d.ts +0 -60
  108. package/dist/src/inbound-attachments.js +0 -248
  109. package/dist/src/known-users.d.ts +0 -100
  110. package/dist/src/known-users.js +0 -263
  111. package/dist/src/message-gating.d.ts +0 -53
  112. package/dist/src/message-gating.js +0 -107
  113. package/dist/src/message-queue.d.ts +0 -91
  114. package/dist/src/message-queue.js +0 -257
  115. package/dist/src/onboarding.d.ts +0 -10
  116. package/dist/src/onboarding.js +0 -203
  117. package/dist/src/outbound-deliver.d.ts +0 -48
  118. package/dist/src/outbound-deliver.js +0 -392
  119. package/dist/src/outbound.d.ts +0 -220
  120. package/dist/src/outbound.js +0 -975
  121. package/dist/src/proactive.d.ts +0 -170
  122. package/dist/src/proactive.js +0 -399
  123. package/dist/src/ref-index-store.d.ts +0 -101
  124. package/dist/src/ref-index-store.js +0 -298
  125. package/dist/src/reply-dispatcher.d.ts +0 -35
  126. package/dist/src/reply-dispatcher.js +0 -311
  127. package/dist/src/request-context.d.ts +0 -25
  128. package/dist/src/request-context.js +0 -37
  129. package/dist/src/runtime.d.ts +0 -3
  130. package/dist/src/runtime.js +0 -13
  131. package/dist/src/session-store.d.ts +0 -52
  132. package/dist/src/session-store.js +0 -254
  133. package/dist/src/slash-commands.d.ts +0 -82
  134. package/dist/src/slash-commands.js +0 -2218
  135. package/dist/src/startup-greeting.d.ts +0 -30
  136. package/dist/src/startup-greeting.js +0 -97
  137. package/dist/src/streaming.d.ts +0 -247
  138. package/dist/src/streaming.js +0 -899
  139. package/dist/src/stt.d.ts +0 -21
  140. package/dist/src/stt.js +0 -70
  141. package/dist/src/tools/channel.d.ts +0 -16
  142. package/dist/src/tools/channel.js +0 -232
  143. package/dist/src/tools/remind.d.ts +0 -2
  144. package/dist/src/tools/remind.js +0 -256
  145. package/dist/src/transport/index.d.ts +0 -10
  146. package/dist/src/transport/index.js +0 -9
  147. package/dist/src/transport/webhook-transport.d.ts +0 -67
  148. package/dist/src/transport/webhook-transport.js +0 -245
  149. package/dist/src/transport/webhook-verify.d.ts +0 -48
  150. package/dist/src/transport/webhook-verify.js +0 -98
  151. package/dist/src/types.d.ts +0 -460
  152. package/dist/src/types.js +0 -22
  153. package/dist/src/typing-keepalive.d.ts +0 -27
  154. package/dist/src/typing-keepalive.js +0 -64
  155. package/dist/src/update-checker.d.ts +0 -36
  156. package/dist/src/update-checker.js +0 -171
  157. package/dist/src/utils/audio-convert.d.ts +0 -98
  158. package/dist/src/utils/audio-convert.js +0 -783
  159. package/dist/src/utils/chunked-upload.d.ts +0 -68
  160. package/dist/src/utils/chunked-upload.js +0 -341
  161. package/dist/src/utils/file-utils.d.ts +0 -61
  162. package/dist/src/utils/file-utils.js +0 -172
  163. package/dist/src/utils/image-size.d.ts +0 -51
  164. package/dist/src/utils/image-size.js +0 -234
  165. package/dist/src/utils/media-send.d.ts +0 -158
  166. package/dist/src/utils/media-send.js +0 -502
  167. package/dist/src/utils/media-tags.d.ts +0 -14
  168. package/dist/src/utils/media-tags.js +0 -165
  169. package/dist/src/utils/payload.d.ts +0 -112
  170. package/dist/src/utils/payload.js +0 -186
  171. package/dist/src/utils/pkg-version.d.ts +0 -5
  172. package/dist/src/utils/pkg-version.js +0 -61
  173. package/dist/src/utils/platform.d.ts +0 -137
  174. package/dist/src/utils/platform.js +0 -390
  175. package/dist/src/utils/ssrf-guard.d.ts +0 -25
  176. package/dist/src/utils/ssrf-guard.js +0 -91
  177. package/dist/src/utils/text-parsing.d.ts +0 -31
  178. package/dist/src/utils/text-parsing.js +0 -74
  179. package/dist/src/utils/upload-cache.d.ts +0 -34
  180. package/dist/src/utils/upload-cache.js +0 -93
  181. package/node_modules/@eshaz/web-worker/LICENSE +0 -201
  182. package/node_modules/@eshaz/web-worker/README.md +0 -134
  183. package/node_modules/@eshaz/web-worker/browser.js +0 -17
  184. package/node_modules/@eshaz/web-worker/cjs/browser.js +0 -16
  185. package/node_modules/@eshaz/web-worker/cjs/node.js +0 -219
  186. package/node_modules/@eshaz/web-worker/index.d.ts +0 -4
  187. package/node_modules/@eshaz/web-worker/node.js +0 -223
  188. package/node_modules/@eshaz/web-worker/package.json +0 -54
  189. package/node_modules/@wasm-audio-decoders/common/index.js +0 -5
  190. package/node_modules/@wasm-audio-decoders/common/package.json +0 -36
  191. package/node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js +0 -231
  192. package/node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js +0 -129
  193. package/node_modules/@wasm-audio-decoders/common/src/puff/README +0 -67
  194. package/node_modules/@wasm-audio-decoders/common/src/puff/build_puff.js +0 -31
  195. package/node_modules/@wasm-audio-decoders/common/src/puff/puff.c +0 -863
  196. package/node_modules/@wasm-audio-decoders/common/src/puff/puff.h +0 -35
  197. package/node_modules/@wasm-audio-decoders/common/src/utilities.js +0 -3
  198. package/node_modules/@wasm-audio-decoders/common/types.d.ts +0 -7
  199. package/node_modules/mpg123-decoder/README.md +0 -265
  200. package/node_modules/mpg123-decoder/dist/mpg123-decoder.min.js +0 -185
  201. package/node_modules/mpg123-decoder/dist/mpg123-decoder.min.js.map +0 -1
  202. package/node_modules/mpg123-decoder/index.js +0 -8
  203. package/node_modules/mpg123-decoder/package.json +0 -58
  204. package/node_modules/mpg123-decoder/src/EmscriptenWasm.js +0 -464
  205. package/node_modules/mpg123-decoder/src/MPEGDecoder.js +0 -200
  206. package/node_modules/mpg123-decoder/src/MPEGDecoderWebWorker.js +0 -21
  207. package/node_modules/mpg123-decoder/types.d.ts +0 -30
  208. package/node_modules/silk-wasm/LICENSE +0 -21
  209. package/node_modules/silk-wasm/README.md +0 -85
  210. package/node_modules/silk-wasm/lib/index.cjs +0 -16
  211. package/node_modules/silk-wasm/lib/index.d.ts +0 -70
  212. package/node_modules/silk-wasm/lib/index.mjs +0 -16
  213. package/node_modules/silk-wasm/lib/silk.wasm +0 -0
  214. package/node_modules/silk-wasm/lib/utils.d.ts +0 -4
  215. package/node_modules/silk-wasm/package.json +0 -39
  216. package/node_modules/simple-yenc/.github/FUNDING.yml +0 -1
  217. package/node_modules/simple-yenc/.prettierignore +0 -1
  218. package/node_modules/simple-yenc/LICENSE +0 -7
  219. package/node_modules/simple-yenc/README.md +0 -163
  220. package/node_modules/simple-yenc/dist/esm.js +0 -1
  221. package/node_modules/simple-yenc/dist/index.js +0 -1
  222. package/node_modules/simple-yenc/package.json +0 -50
  223. package/node_modules/simple-yenc/rollup.config.js +0 -27
  224. package/node_modules/simple-yenc/src/simple-yenc.js +0 -302
  225. package/node_modules/ws/LICENSE +0 -20
  226. package/node_modules/ws/README.md +0 -548
  227. package/node_modules/ws/browser.js +0 -8
  228. package/node_modules/ws/index.js +0 -13
  229. package/node_modules/ws/lib/buffer-util.js +0 -131
  230. package/node_modules/ws/lib/constants.js +0 -19
  231. package/node_modules/ws/lib/event-target.js +0 -292
  232. package/node_modules/ws/lib/extension.js +0 -203
  233. package/node_modules/ws/lib/limiter.js +0 -55
  234. package/node_modules/ws/lib/permessage-deflate.js +0 -528
  235. package/node_modules/ws/lib/receiver.js +0 -706
  236. package/node_modules/ws/lib/sender.js +0 -602
  237. package/node_modules/ws/lib/stream.js +0 -161
  238. package/node_modules/ws/lib/subprotocol.js +0 -62
  239. package/node_modules/ws/lib/validation.js +0 -152
  240. package/node_modules/ws/lib/websocket-server.js +0 -554
  241. package/node_modules/ws/lib/websocket.js +0 -1393
  242. package/node_modules/ws/package.json +0 -69
  243. package/node_modules/ws/wrapper.mjs +0 -8
  244. package/skills/qqbot-media/SKILL.md +0 -60
  245. package/src/admin-resolver.ts +0 -181
  246. package/src/api.ts +0 -1320
  247. package/src/deliver-debounce.ts +0 -229
  248. package/src/gateway.ts +0 -2272
  249. package/src/group-history.ts +0 -328
  250. package/src/image-server.ts +0 -675
  251. package/src/inbound-attachments.ts +0 -321
  252. package/src/known-users.ts +0 -353
  253. package/src/message-gating.ts +0 -190
  254. package/src/message-queue.ts +0 -354
  255. package/src/onboarding.ts +0 -274
  256. package/src/outbound-deliver.ts +0 -486
  257. package/src/outbound.ts +0 -1179
  258. package/src/ref-index-store.ts +0 -412
  259. package/src/reply-dispatcher.ts +0 -334
  260. package/src/session-store.ts +0 -303
  261. package/src/slash-commands.ts +0 -2413
  262. package/src/startup-greeting.ts +0 -120
  263. package/src/streaming.ts +0 -1077
  264. package/src/stt.ts +0 -86
  265. package/src/transport/index.ts +0 -11
  266. package/src/transport/webhook-transport.ts +0 -332
  267. package/src/transport/webhook-verify.ts +0 -119
  268. package/src/typing-keepalive.ts +0 -59
  269. package/src/typings/openclaw-webhook-ingress.d.ts +0 -66
  270. package/src/utils/audio-convert.ts +0 -887
  271. package/src/utils/chunked-upload.ts +0 -483
  272. package/src/utils/file-utils.ts +0 -193
  273. package/src/utils/image-size.ts +0 -266
  274. package/src/utils/media-send.ts +0 -636
  275. package/src/utils/media-tags.ts +0 -183
  276. package/src/utils/payload.ts +0 -265
  277. package/src/utils/text-parsing.ts +0 -85
  278. 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 connections (WebSocket or Webhook depending on `transport` config)
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` 的账户会同时启动连接(WebSocket 或 Webhook,取决于 `transport` 配置)
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(语音转文字)— 自动转录用户发来的语音消息