@openclaw/discord 2026.7.2-beta.7 → 2026.8.1-beta.3

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 (114) hide show
  1. package/dist/{account-inspect-SXiCBCgP.js → account-inspect-D5xmUpnj.js} +49 -43
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/accounts-DNl-oCEw.js +371 -0
  4. package/dist/action-runtime-api.js +1 -1
  5. package/dist/{active-turn-thread-route-MlKWp8RD.js → active-turn-thread-route-fmHl1HNd.js} +9 -11
  6. package/dist/{activities-api-DTKsuDxf.js → activities-api-KCBAmWxD.js} +133 -175
  7. package/dist/activities-api.js +1 -1
  8. package/dist/{allow-list-DzKrtfah.js → allow-list-BDMimASD.js} +2 -3
  9. package/dist/{api-DnrK9gML.js → api-DNVbJyEy.js} +7 -2
  10. package/dist/api.js +18 -18
  11. package/dist/{approval-handler.runtime-HymvFTYn.js → approval-handler.runtime-B12RCYr8.js} +6 -6
  12. package/dist/{approval-message-safety-DEyKVsAw.js → approval-message-safety-XGFPbDoI.js} +89 -3
  13. package/dist/{audit-CjsrabP8.js → audit-Yc7eZDd6.js} +5 -5
  14. package/dist/{channel-actions-uXFTJX3o.js → channel-actions-Dr2QI8Bf.js} +11 -7
  15. package/dist/{channel-actions.runtime-CIYU90sl.js → channel-actions.runtime-CODTvo7c.js} +99 -97
  16. package/dist/{channel-vKa-76xY.js → channel-cXYzGc4L.js} +102 -104
  17. package/dist/channel-config-api.js +1 -1
  18. package/dist/channel-plugin-api.js +1 -1
  19. package/dist/{channel.setup-CmcwZ_qd.js → channel.setup-CSiwnMgs.js} +16 -54
  20. package/dist/{outbound-session-route-H-HoyH5U.js → components-ezGKo_Yh.js} +69 -142
  21. package/dist/{config-schema-WHRQcY19.js → config-schema-DC5kDtQ5.js} +42 -11
  22. package/dist/conversation-binding-route-D6rCQ5S0.js +43 -0
  23. package/dist/{directory-config-D_LojtCe.js → directory-config-XyCfoqLg.js} +2 -2
  24. package/dist/directory-contract-api.js +1 -1
  25. package/dist/{directory-live-Bw5Ephzv.js → directory-live-Df0NbFJB.js} +7 -4
  26. package/dist/{doctor-Bc4S1qyd.js → doctor-DYY31GrO.js} +34 -13
  27. package/dist/{doctor-contract-CCFMIDk9.js → doctor-contract-DsWvKIXF.js} +2 -3
  28. package/dist/doctor-contract-api.js +147 -2
  29. package/dist/{handle-action.guild-admin-D6VRRW-C.js → handle-action.guild-admin-6Tvvinsa.js} +4 -7
  30. package/dist/{inbound-event-delivery-CEPlt2uz.js → inbound-event-delivery-De2qxTrP.js} +4 -25
  31. package/dist/index.js +5 -4
  32. package/dist/{message-handler-CeiSulIw.js → message-handler-B61q5MOF.js} +118 -33
  33. package/dist/{message-handler.preflight-DibgQFf2.js → message-handler.preflight-Bzg_Hawz.js} +75 -61
  34. package/dist/{message-handler.process-Dnc_oz9y.js → message-handler.process--4_712Ec.js} +236 -296
  35. package/dist/{message-utils-BgTwT_q7.js → message-utils-BXLLnFl6.js} +34 -35
  36. package/dist/{model-picker-preference-primitives-D25pnCOu.js → model-picker-preference-primitives-BHT1LkR_.js} +3 -3
  37. package/dist/{outbound-adapter-DtE-i2OJ.js → outbound-adapter-DxHTOqiN.js} +157 -68
  38. package/dist/{outbound-components-C7GVyfPh.js → outbound-components-B2PL0ooH.js} +3 -3
  39. package/dist/owner-access-Bg41VzAf.js +107 -0
  40. package/dist/{pluralkit-CD4B11JB.js → pluralkit-dUl4v1X3.js} +1 -1
  41. package/dist/{preflight-audio-BjnQZ5yS.js → preflight-audio-DrnqFA8U.js} +22 -28
  42. package/dist/{probe-BeWKhjqX.js → probe-BTdtVRwU.js} +37 -13
  43. package/dist/probe.runtime-Dq5-PRKT.js +2 -0
  44. package/dist/{provider-DfQJX3z5.js → provider-DlK_ynqt.js} +1131 -2021
  45. package/dist/{provider-session.runtime-Bo88k0pV.js → provider-session.runtime-CvvphHvs.js} +3 -3
  46. package/dist/provider.runtime-CzKGRiAF.js +2 -0
  47. package/dist/realtime-session.runtime-ysbMG8v7.js +1351 -0
  48. package/dist/{resolve-allowlist-common-DHERApxi.js → resolve-allowlist-common-DIVXbD1P.js} +3 -3
  49. package/dist/{resolve-channels-BjepAj8b.js → resolve-channels-CGeUoIqb.js} +4 -4
  50. package/dist/{resolve-users-Bc28htgt.js → resolve-users-BtKxLUZv.js} +3 -3
  51. package/dist/{chunk-DX4jpFQP.js → retry-DNsVTeTo.js} +308 -131
  52. package/dist/{runtime-BmW_j_hl.js → runtime-CQovMsH3.js} +12 -15
  53. package/dist/{runtime-_aRC6V2s.js → runtime-D71_VFLr.js} +49 -58
  54. package/dist/runtime-api.actions.js +2 -2
  55. package/dist/runtime-api.js +23 -23
  56. package/dist/runtime-api.lookup.js +5 -5
  57. package/dist/runtime-api.monitor-CzeTYF32.js +6 -0
  58. package/dist/runtime-api.monitor.js +6 -5
  59. package/dist/runtime-api.send.js +6 -6
  60. package/dist/runtime-api.threads.js +5 -6
  61. package/dist/sdk-runtime-37OU6_Yh.js +369 -0
  62. package/dist/{secret-config-contract-B1akrlyY.js → secret-config-contract-B3i6WxV5.js} +53 -25
  63. package/dist/secret-contract-api.js +1 -1
  64. package/dist/security-audit-contract-api.js +1 -1
  65. package/dist/{security-audit.runtime-CPN0xFYz.js → security-audit.runtime-BVKF9VtY.js} +1 -1
  66. package/dist/{send-CdkZ6zeW.js → send-rQIffSYu.js} +180 -91
  67. package/dist/{send.components-5uqwkjgE.js → send.components-ChK1wS7w.js} +32 -46
  68. package/dist/{send.outbound-D-80Ej-t.js → send.outbound-HIkgji_7.js} +57 -34
  69. package/dist/{send.reactions-CtlmGd_o.js → send.reactions-gmJ6yFPo.js} +14 -21
  70. package/dist/{send.receipt-CuwRrpFz.js → send.receipt-Cnhoautb.js} +29 -1
  71. package/dist/{send.shared-jpvAG_u6.js → send.shared-B3fpaLWJ.js} +112 -181
  72. package/dist/{sender-identity-mG_zsdox.js → sender-identity-BJtfyise.js} +1 -1
  73. package/dist/setup-entry.js +0 -5
  74. package/dist/setup-plugin-api.js +1 -1
  75. package/dist/{shared-CXF1tup1.js → shared-CaAaoksy.js} +27 -23
  76. package/dist/subagent-hooks-CNT2ZJTJ.js +49 -0
  77. package/dist/subagent-hooks-api.js +2 -6
  78. package/dist/subagent-progress-FPLqBY1s.js +110 -0
  79. package/dist/{system-events-DdUqf91B.js → system-events-Nuwoq_au.js} +2 -2
  80. package/dist/{target-resolver-C3s_2m0t.js → target-resolver-DIXShHaZ.js} +3 -3
  81. package/dist/targets-B2pf49zc.js +3 -0
  82. package/dist/{thread-bindings-C-M-ly7P.js → thread-bindings-VlymUnbz.js} +29 -28
  83. package/dist/{thread-bindings.manager-DYvSlrva.js → thread-bindings.manager-CngsgErq.js} +258 -29
  84. package/dist/{thread-bindings.session-updates-DAIlp7Px.js → thread-bindings.session-updates-CJb-BpPL.js} +1 -1
  85. package/dist/{thread-bindings.state-Cgi5uRn-.js → thread-bindings.state-D8OMdk4O.js} +3 -16
  86. package/dist/threading-DU6pgeGm.js +456 -0
  87. package/dist/transcripts-source-DeIMNbRh.js +265 -0
  88. package/dist/transcripts-source-api.js +7 -2
  89. package/dist/{typing--Mzo2kM7.js → typing-oLiS5Z13.js} +1 -1
  90. package/dist/voice-runtime-CjNFaynA.js +2549 -0
  91. package/openclaw.plugin.json +215 -25
  92. package/package.json +15 -11
  93. package/skills/discord/SKILL.md +22 -115
  94. package/dist/accounts-DJTf1LtA.js +0 -219
  95. package/dist/channel-api-CAJ0wMoV.js +0 -21
  96. package/dist/legacy-state-migrations-api.js +0 -138
  97. package/dist/manager.runtime-Bjav3pfC.js +0 -3655
  98. package/dist/preflight-audio.runtime-CoCXMM8r.js +0 -7
  99. package/dist/probe.runtime-DqFGFMbZ.js +0 -2
  100. package/dist/provider.runtime-Cy7XZmyh.js +0 -2
  101. package/dist/runtime-api.monitor-CCRubd3-.js +0 -5
  102. package/dist/session-binding-contract-api.js +0 -2
  103. package/dist/subagent-hooks-Dxy7Fmnq.js +0 -120
  104. package/dist/subagent-progress-DI3sYLLo.js +0 -664
  105. package/dist/targets-Dv_RN7vT.js +0 -3
  106. package/dist/thread-bindings.discord-api-BoDNqamb.js +0 -246
  107. package/dist/transcripts-source-DIKGsTGT.js +0 -123
  108. package/node_modules/p-map/index.d.ts +0 -155
  109. package/node_modules/p-map/index.js +0 -285
  110. package/node_modules/p-map/license +0 -9
  111. package/node_modules/p-map/package.json +0 -57
  112. package/node_modules/p-map/readme.md +0 -190
  113. package/dist/{audit-core-xwjIczO0.js → audit-core-BCX8UeFH.js} +1 -1
  114. package/dist/{security-audit-jGnJF__m.js → security-audit-BfJhAXZp.js} +1 -1
@@ -1,5 +1,9 @@
1
1
  {
2
2
  "id": "discord",
3
+ "doctorContract": {
4
+ "configRepair": true,
5
+ "stateMigrations": true
6
+ },
3
7
  "name": "Discord",
4
8
  "description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
5
9
  "icon": "https://cdn.simpleicons.org/discord",
@@ -13,10 +17,6 @@
13
17
  "discord"
14
18
  ],
15
19
  "contracts": {
16
- "tools": [
17
- "show_widget",
18
- "discord_widget"
19
- ],
20
20
  "transcriptSourceProviders": [
21
21
  "discord-voice"
22
22
  ]
@@ -256,13 +256,6 @@
256
256
  "exclusiveMinimum": 0,
257
257
  "maximum": 9007199254740991
258
258
  },
259
- "render": {
260
- "type": "string",
261
- "enum": [
262
- "text",
263
- "rich"
264
- ]
265
- },
266
259
  "toolProgress": {
267
260
  "type": "boolean"
268
261
  },
@@ -424,6 +417,29 @@
424
417
  ],
425
418
  "additionalProperties": false
426
419
  },
420
+ {
421
+ "type": "object",
422
+ "properties": {
423
+ "source": {
424
+ "type": "string",
425
+ "const": "store"
426
+ },
427
+ "provider": {
428
+ "type": "string",
429
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
430
+ },
431
+ "id": {
432
+ "type": "string",
433
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
434
+ }
435
+ },
436
+ "required": [
437
+ "source",
438
+ "provider",
439
+ "id"
440
+ ],
441
+ "additionalProperties": false
442
+ },
427
443
  {
428
444
  "type": "object",
429
445
  "properties": {
@@ -1009,6 +1025,9 @@
1009
1025
  "intents": {
1010
1026
  "type": "object",
1011
1027
  "properties": {
1028
+ "messageContent": {
1029
+ "type": "boolean"
1030
+ },
1012
1031
  "presence": {
1013
1032
  "type": "boolean"
1014
1033
  },
@@ -1158,6 +1177,9 @@
1158
1177
  "channelId": {
1159
1178
  "type": "string",
1160
1179
  "minLength": 1
1180
+ },
1181
+ "whenOccupied": {
1182
+ "type": "boolean"
1161
1183
  }
1162
1184
  },
1163
1185
  "required": [
@@ -1365,6 +1387,29 @@
1365
1387
  "id"
1366
1388
  ],
1367
1389
  "additionalProperties": false
1390
+ },
1391
+ {
1392
+ "type": "object",
1393
+ "properties": {
1394
+ "source": {
1395
+ "type": "string",
1396
+ "const": "store"
1397
+ },
1398
+ "provider": {
1399
+ "type": "string",
1400
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1401
+ },
1402
+ "id": {
1403
+ "type": "string",
1404
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1405
+ }
1406
+ },
1407
+ "required": [
1408
+ "source",
1409
+ "provider",
1410
+ "id"
1411
+ ],
1412
+ "additionalProperties": false
1368
1413
  }
1369
1414
  ]
1370
1415
  }
@@ -1518,6 +1563,29 @@
1518
1563
  "id"
1519
1564
  ],
1520
1565
  "additionalProperties": false
1566
+ },
1567
+ {
1568
+ "type": "object",
1569
+ "properties": {
1570
+ "source": {
1571
+ "type": "string",
1572
+ "const": "store"
1573
+ },
1574
+ "provider": {
1575
+ "type": "string",
1576
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1577
+ },
1578
+ "id": {
1579
+ "type": "string",
1580
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1581
+ }
1582
+ },
1583
+ "required": [
1584
+ "source",
1585
+ "provider",
1586
+ "id"
1587
+ ],
1588
+ "additionalProperties": false
1521
1589
  }
1522
1590
  ]
1523
1591
  }
@@ -1605,6 +1673,29 @@
1605
1673
  ],
1606
1674
  "additionalProperties": false
1607
1675
  },
1676
+ {
1677
+ "type": "object",
1678
+ "properties": {
1679
+ "source": {
1680
+ "type": "string",
1681
+ "const": "store"
1682
+ },
1683
+ "provider": {
1684
+ "type": "string",
1685
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1686
+ },
1687
+ "id": {
1688
+ "type": "string",
1689
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1690
+ }
1691
+ },
1692
+ "required": [
1693
+ "source",
1694
+ "provider",
1695
+ "id"
1696
+ ],
1697
+ "additionalProperties": false
1698
+ },
1608
1699
  {
1609
1700
  "type": "object",
1610
1701
  "properties": {
@@ -1976,13 +2067,6 @@
1976
2067
  "exclusiveMinimum": 0,
1977
2068
  "maximum": 9007199254740991
1978
2069
  },
1979
- "render": {
1980
- "type": "string",
1981
- "enum": [
1982
- "text",
1983
- "rich"
1984
- ]
1985
- },
1986
2070
  "toolProgress": {
1987
2071
  "type": "boolean"
1988
2072
  },
@@ -2144,6 +2228,29 @@
2144
2228
  ],
2145
2229
  "additionalProperties": false
2146
2230
  },
2231
+ {
2232
+ "type": "object",
2233
+ "properties": {
2234
+ "source": {
2235
+ "type": "string",
2236
+ "const": "store"
2237
+ },
2238
+ "provider": {
2239
+ "type": "string",
2240
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
2241
+ },
2242
+ "id": {
2243
+ "type": "string",
2244
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
2245
+ }
2246
+ },
2247
+ "required": [
2248
+ "source",
2249
+ "provider",
2250
+ "id"
2251
+ ],
2252
+ "additionalProperties": false
2253
+ },
2147
2254
  {
2148
2255
  "type": "object",
2149
2256
  "properties": {
@@ -2729,6 +2836,9 @@
2729
2836
  "intents": {
2730
2837
  "type": "object",
2731
2838
  "properties": {
2839
+ "messageContent": {
2840
+ "type": "boolean"
2841
+ },
2732
2842
  "presence": {
2733
2843
  "type": "boolean"
2734
2844
  },
@@ -2878,6 +2988,9 @@
2878
2988
  "channelId": {
2879
2989
  "type": "string",
2880
2990
  "minLength": 1
2991
+ },
2992
+ "whenOccupied": {
2993
+ "type": "boolean"
2881
2994
  }
2882
2995
  },
2883
2996
  "required": [
@@ -3085,6 +3198,29 @@
3085
3198
  "id"
3086
3199
  ],
3087
3200
  "additionalProperties": false
3201
+ },
3202
+ {
3203
+ "type": "object",
3204
+ "properties": {
3205
+ "source": {
3206
+ "type": "string",
3207
+ "const": "store"
3208
+ },
3209
+ "provider": {
3210
+ "type": "string",
3211
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3212
+ },
3213
+ "id": {
3214
+ "type": "string",
3215
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
3216
+ }
3217
+ },
3218
+ "required": [
3219
+ "source",
3220
+ "provider",
3221
+ "id"
3222
+ ],
3223
+ "additionalProperties": false
3088
3224
  }
3089
3225
  ]
3090
3226
  }
@@ -3238,6 +3374,29 @@
3238
3374
  "id"
3239
3375
  ],
3240
3376
  "additionalProperties": false
3377
+ },
3378
+ {
3379
+ "type": "object",
3380
+ "properties": {
3381
+ "source": {
3382
+ "type": "string",
3383
+ "const": "store"
3384
+ },
3385
+ "provider": {
3386
+ "type": "string",
3387
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3388
+ },
3389
+ "id": {
3390
+ "type": "string",
3391
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
3392
+ }
3393
+ },
3394
+ "required": [
3395
+ "source",
3396
+ "provider",
3397
+ "id"
3398
+ ],
3399
+ "additionalProperties": false
3241
3400
  }
3242
3401
  ]
3243
3402
  }
@@ -3325,6 +3484,29 @@
3325
3484
  ],
3326
3485
  "additionalProperties": false
3327
3486
  },
3487
+ {
3488
+ "type": "object",
3489
+ "properties": {
3490
+ "source": {
3491
+ "type": "string",
3492
+ "const": "store"
3493
+ },
3494
+ "provider": {
3495
+ "type": "string",
3496
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
3497
+ },
3498
+ "id": {
3499
+ "type": "string",
3500
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
3501
+ }
3502
+ },
3503
+ "required": [
3504
+ "source",
3505
+ "provider",
3506
+ "id"
3507
+ ],
3508
+ "additionalProperties": false
3509
+ },
3328
3510
  {
3329
3511
  "type": "object",
3330
3512
  "properties": {
@@ -3521,11 +3703,11 @@
3521
3703
  },
3522
3704
  "streaming": {
3523
3705
  "label": "Discord Streaming Mode",
3524
- "help": "Unified Discord stream preview mode: \"off\" | \"partial\" | \"block\" | \"progress\". \"progress\" keeps a single editable progress draft until final delivery. Legacy boolean/streamMode keys are auto-mapped."
3706
+ "help": "Discord preview streaming is off by default. Set mode to \"partial\", \"block\", or \"progress\" to opt in. Run openclaw doctor --fix to migrate legacy keys."
3525
3707
  },
3526
3708
  "streaming.mode": {
3527
3709
  "label": "Discord Streaming Mode",
3528
- "help": "Canonical Discord preview mode: \"off\" | \"partial\" | \"block\" | \"progress\"."
3710
+ "help": "Discord preview mode: \"off\" | \"partial\" | \"block\" | \"progress\". Default: \"off\"."
3529
3711
  },
3530
3712
  "streaming.chunkMode": {
3531
3713
  "label": "Discord Chunk Mode",
@@ -3533,7 +3715,7 @@
3533
3715
  },
3534
3716
  "streaming.block.enabled": {
3535
3717
  "label": "Discord Block Streaming Enabled",
3536
- "help": "Enable chunked block-style Discord preview delivery when channels.discord.streaming.mode=\"block\"."
3718
+ "help": "Enable normal Discord block replies. This takes precedence over editable preview delivery."
3537
3719
  },
3538
3720
  "streaming.block.coalesce": {
3539
3721
  "label": "Discord Block Streaming Coalesce",
@@ -3557,7 +3739,7 @@
3557
3739
  },
3558
3740
  "streaming.preview.commandText": {
3559
3741
  "label": "Discord Draft Command Text",
3560
- "help": "Command/exec detail in preview tool-progress lines: \"raw\" preserves released behavior; \"status\" shows only the tool label."
3742
+ "help": "Command/exec detail in preview tool-progress lines: \"status\" is the safe default; \"raw\" opts into command text."
3561
3743
  },
3562
3744
  "streaming.progress.label": {
3563
3745
  "label": "Discord Progress Label",
@@ -3585,7 +3767,7 @@
3585
3767
  },
3586
3768
  "streaming.progress.commandText": {
3587
3769
  "label": "Discord Progress Command Text",
3588
- "help": "Command/exec detail in progress draft lines: \"raw\" preserves released behavior; \"status\" shows only the tool label."
3770
+ "help": "Command/exec detail in progress draft lines: \"status\" is the safe default; \"raw\" opts into command text."
3589
3771
  },
3590
3772
  "proxy": {
3591
3773
  "label": "Discord Proxy URL",
@@ -3627,6 +3809,10 @@
3627
3809
  "label": "Discord Component TTL (ms)",
3628
3810
  "help": "How long sent Discord component callbacks remain registered. Default is 1800000 (30 minutes); maximum is 86400000 (24 hours)."
3629
3811
  },
3812
+ "intents.messageContent": {
3813
+ "label": "Discord Message Content Intent",
3814
+ "help": "Request the privileged Message Content intent (default: true). Set false only for mention-only guild operation when Discord cannot grant the intent; DMs and explicit mentions still include message content."
3815
+ },
3630
3816
  "intents.presence": {
3631
3817
  "label": "Discord Presence Intent",
3632
3818
  "help": "Enable the Guild Presences privileged intent. Must also be enabled in the Discord Developer Portal. Allows tracking user activities (e.g. Spotify). Default: false."
@@ -3718,7 +3904,11 @@
3718
3904
  },
3719
3905
  "voice.autoJoin": {
3720
3906
  "label": "Discord Voice Auto-Join",
3721
- "help": "Voice channels to auto-join on startup (list of guildId/channelId entries)."
3907
+ "help": "Voice channels to auto-join (list of guildId/channelId entries). Set whenOccupied on an entry to connect only while humans are present."
3908
+ },
3909
+ "voice.autoJoin.*.whenOccupied": {
3910
+ "label": "Discord Voice Auto-Join When Occupied",
3911
+ "help": "Join and remain in this auto-managed voice channel only while at least one human is present. The OpenClaw bot and other bots do not count. Default: false."
3722
3912
  },
3723
3913
  "voice.allowedChannels": {
3724
3914
  "label": "Discord Voice Allowed Channels",
@@ -3851,7 +4041,7 @@
3851
4041
  },
3852
4042
  "activities": {
3853
4043
  "label": "Discord Activities",
3854
- "help": "Enable Discord Activity widgets for this account. Routes, the agent tool, and the launch handler remain disabled when this block is absent."
4044
+ "help": "Enable the Discord Activity presenter for the core show_widget tool on this account. Activity routes and the launch handler remain disabled when this block is absent."
3855
4045
  },
3856
4046
  "activities.clientSecret": {
3857
4047
  "label": "Discord Activities Client Secret",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.7.2-beta.7",
3
+ "version": "2026.8.1-beta.3",
4
4
  "description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,14 +13,13 @@
13
13
  "discord-api-types": "0.38.52",
14
14
  "libopus-wasm": "0.2.0",
15
15
  "mdast-util-from-markdown": "2.0.3",
16
- "p-map": "7.0.6",
17
16
  "typebox": "1.3.6",
18
17
  "undici": "8.9.0",
19
18
  "ws": "8.21.1",
20
19
  "zod": "4.4.3"
21
20
  },
22
21
  "peerDependencies": {
23
- "openclaw": ">=2026.7.2-beta.7"
22
+ "openclaw": ">=2026.8.1-beta.3"
24
23
  },
25
24
  "peerDependenciesMeta": {
26
25
  "openclaw": {
@@ -32,9 +31,6 @@
32
31
  "./index.ts"
33
32
  ],
34
33
  "setupEntry": "./dist/setup-entry.js",
35
- "setupFeatures": {
36
- "legacyStateMigrations": true
37
- },
38
34
  "channel": {
39
35
  "id": "discord",
40
36
  "configuredState": {
@@ -73,13 +69,22 @@
73
69
  "cli": {
74
70
  "flags": "--use-env",
75
71
  "description": "Use DISCORD_BOT_TOKEN"
76
- }
72
+ },
73
+ "envVars": [
74
+ "DISCORD_BOT_TOKEN"
75
+ ]
77
76
  }
78
77
  ]
79
78
  },
80
79
  "commands": {
81
80
  "nativeCommandsAutoEnabled": true,
82
81
  "nativeSkillsAutoEnabled": true
82
+ },
83
+ "doctorCapabilities": {
84
+ "dmAllowFromMode": "topOnly",
85
+ "groupModel": "route",
86
+ "groupAllowFromFallbackToAllowFrom": false,
87
+ "warnOnEmptyGroupSenderAllowlist": false
83
88
  }
84
89
  },
85
90
  "install": {
@@ -89,10 +94,10 @@
89
94
  "allowInvalidConfigRecovery": true
90
95
  },
91
96
  "compat": {
92
- "pluginApi": ">=2026.7.2-beta.7"
97
+ "pluginApi": ">=2026.8.1-beta.3"
93
98
  },
94
99
  "build": {
95
- "openclawVersion": "2026.7.2-beta.7",
100
+ "openclawVersion": "2026.8.1-beta.3",
96
101
  "staticAssets": [
97
102
  {
98
103
  "source": "./assets/embedded-app-sdk.mjs",
@@ -101,7 +106,7 @@
101
106
  ]
102
107
  },
103
108
  "assetScripts": {
104
- "build": "node ../../scripts/build-discord-activity-sdk.mjs"
109
+ "build": "node --import tsx ../../scripts/build-discord-activity-sdk.mts"
105
110
  },
106
111
  "release": {
107
112
  "publishToClawHub": true,
@@ -124,7 +129,6 @@
124
129
  "discord-api-types",
125
130
  "libopus-wasm",
126
131
  "mdast-util-from-markdown",
127
- "p-map",
128
132
  "typebox",
129
133
  "undici",
130
134
  "ws",
@@ -1,136 +1,43 @@
1
1
  ---
2
2
  name: discord
3
- description: "Discord message-tool ops: send/read/edit/delete, react, poll, pin, thread, search, presence, media/components."
3
+ description: "Discord messaging workflows through OpenClaw's message tool."
4
4
  metadata: { "openclaw": { "emoji": "🎮", "requires": { "config": ["channels.discord.token"] } } }
5
5
  allowed-tools: ["message"]
6
6
  ---
7
7
 
8
8
  # Discord
9
9
 
10
- Use the `message` tool with `channel: "discord"`. No separate Discord tool.
10
+ Use the `message` tool with `channel: "discord"`. The tool schema lists the actions enabled by the current account's `channels.discord.actions.*` gates; do not assume unavailable actions.
11
11
 
12
- ## Rules
12
+ ## Workflow
13
13
 
14
- - Respect `channels.discord.actions.*` gates.
15
- - Prefer explicit `guildId`, `channelId`, `messageId`, `userId`.
16
- - Multi-account: pass `accountId` when needed.
17
- - Send targets: `to: "channel:<id>"` or `to: "user:<id>"`.
18
- - Mention users as `<@USER_ID>`.
19
- - Avoid Markdown tables in outbound Discord messages.
20
- - Prefer components v2 for rich UI; do not mix v2 `components` with legacy `embeds`.
14
+ - Prefer stable `guildId`, `channelId`, `messageId`, and `userId` values from context. Pass `accountId` when more than one Discord account could apply.
15
+ - Resolve the exact message before editing, deleting, pinning, moderating, or reacting when the user's reference is ambiguous.
16
+ - Keep thread replies in their existing thread. A forum parent cannot receive components; send components to the created forum thread instead.
17
+ - Confirm destructive or moderation actions unless the user already specified the exact target and action.
21
18
 
22
- ## Common actions
19
+ ## Interactive components
23
20
 
24
- Send:
25
-
26
- ```json
27
- { "action": "send", "channel": "discord", "to": "channel:123", "message": "hello", "silent": true }
28
- ```
29
-
30
- Send media:
31
-
32
- ```json
33
- {
34
- "action": "send",
35
- "channel": "discord",
36
- "to": "channel:123",
37
- "message": "see attachment",
38
- "media": "file:///tmp/example.png"
39
- }
40
- ```
41
-
42
- Components v2:
21
+ `components` must be a structured object or native component array, never a placeholder string. Do not combine components v2 with legacy `embeds`.
43
22
 
44
23
  ```json
45
24
  {
46
25
  "action": "send",
47
26
  "channel": "discord",
48
27
  "to": "channel:123",
49
- "message": "Status",
50
- "components": "[Carbon v2 components]"
51
- }
52
- ```
53
-
54
- React:
55
-
56
- ```json
57
- { "action": "react", "channel": "discord", "channelId": "123", "messageId": "456", "emoji": "👍" }
58
- ```
59
-
60
- Read:
61
-
62
- ```json
63
- { "action": "read", "channel": "discord", "to": "channel:123", "limit": 20 }
64
- ```
65
-
66
- Edit/delete:
67
-
68
- ```json
69
- {
70
- "action": "edit",
71
- "channel": "discord",
72
- "channelId": "123",
73
- "messageId": "456",
74
- "message": "fixed typo"
28
+ "message": "Choose an option",
29
+ "components": {
30
+ "blocks": [
31
+ {
32
+ "type": "actions",
33
+ "buttons": [
34
+ { "label": "Approve", "style": "success", "callbackData": "approve" },
35
+ { "label": "Decline", "style": "danger", "callbackData": "decline" }
36
+ ]
37
+ }
38
+ ]
39
+ }
75
40
  }
76
41
  ```
77
42
 
78
- ```json
79
- { "action": "delete", "channel": "discord", "channelId": "123", "messageId": "456" }
80
- ```
81
-
82
- Poll:
83
-
84
- ```json
85
- {
86
- "action": "poll",
87
- "channel": "discord",
88
- "to": "channel:123",
89
- "pollQuestion": "Lunch?",
90
- "pollOption": ["Pizza", "Sushi"],
91
- "pollDurationHours": 24
92
- }
93
- ```
94
-
95
- Pin:
96
-
97
- ```json
98
- { "action": "pin", "channel": "discord", "channelId": "123", "messageId": "456" }
99
- ```
100
-
101
- Thread:
102
-
103
- ```json
104
- {
105
- "action": "thread-create",
106
- "channel": "discord",
107
- "channelId": "123",
108
- "messageId": "456",
109
- "threadName": "bug triage"
110
- }
111
- ```
112
-
113
- Search:
114
-
115
- ```json
116
- {
117
- "action": "search",
118
- "channel": "discord",
119
- "guildId": "999",
120
- "query": "release notes",
121
- "channelIds": ["123"],
122
- "limit": 10
123
- }
124
- ```
125
-
126
- Presence, often gated:
127
-
128
- ```json
129
- {
130
- "action": "set-presence",
131
- "channel": "discord",
132
- "activityType": "playing",
133
- "activityName": "OpenClaw",
134
- "status": "online"
135
- }
136
- ```
43
+ Discord mention syntax, component availability, and form hints are injected automatically. Follow the current hints and tool schema rather than a duplicated action catalog.