@openclaw/discord 2026.6.10 → 2026.6.11

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 (61) hide show
  1. package/dist/action-runtime-api.js +1 -1
  2. package/dist/api.js +12 -12
  3. package/dist/{approval-handler.runtime-20qhf0uH.js → approval-handler.runtime-SsFtZQA6.js} +3 -3
  4. package/dist/{audit-CCffO6o7.js → audit-CAnmyf2A.js} +3 -3
  5. package/dist/{channel-BZ3NznY_.js → channel-YA7AbYP3.js} +14 -14
  6. package/dist/{channel-actions-DDT9kJXw.js → channel-actions-BJ3n5Z1l.js} +2 -2
  7. package/dist/{channel-actions.runtime-CfMUtfAv.js → channel-actions.runtime-D2QTRgZ9.js} +5 -5
  8. package/dist/channel-plugin-api.js +1 -1
  9. package/dist/{channel.setup-DRJiHe7I.js → channel.setup-B1zDEAR7.js} +2 -2
  10. package/dist/{components-CXEorOhu.js → components-Dm4c_ce6.js} +1 -1
  11. package/dist/{conversation-identity-BvlP-djn.js → conversation-identity-DZ0BD7xO.js} +2 -2
  12. package/dist/{directory-config-Bg8bulWB.js → directory-config-BK1OhHa3.js} +1 -1
  13. package/dist/directory-contract-api.js +1 -1
  14. package/dist/{directory-live-BAJw6kS2.js → directory-live-DP3CmwGf.js} +1 -1
  15. package/dist/{handle-action.guild-admin-RxnJFLgU.js → handle-action.guild-admin-B2cOoU2D.js} +2 -2
  16. package/dist/index.js +1 -1
  17. package/dist/{manager.runtime-D_jgYp8E.js → manager.runtime-CPHxr9B3.js} +27 -31
  18. package/dist/{message-handler-1sY7wU_a.js → message-handler-CKaTgBIV.js} +6 -6
  19. package/dist/{message-handler.preflight-Rz2OZiuq.js → message-handler.preflight--eAiaewz.js} +10 -10
  20. package/dist/{message-handler.process-DoynJ51o.js → message-handler.process-PhKAmrEd.js} +23 -25
  21. package/dist/{message-utils-ConlUKCU.js → message-utils-O1vK3kPu.js} +1 -1
  22. package/dist/{outbound-adapter-XuMiR77A.js → outbound-adapter-fO_7hbTh.js} +6 -6
  23. package/dist/{pluralkit-o6s-EP9g.js → pluralkit-B3MzPaPU.js} +1 -1
  24. package/dist/{provider-Cqe8M2zT.js → provider-BJaJ20MY.js} +18 -18
  25. package/dist/{provider-session.runtime-COsZZGlm.js → provider-session.runtime-D6xc-60s.js} +3 -3
  26. package/dist/provider.runtime-jNlHxUSW.js +2 -0
  27. package/dist/{resolve-channels-DpM2v0Am.js → resolve-channels-iJIjYfRw.js} +1 -1
  28. package/dist/{resolve-users-Dl6np4pH.js → resolve-users-_fv1mm1f.js} +1 -1
  29. package/dist/runtime-api.actions.js +2 -2
  30. package/dist/runtime-api.js +18 -18
  31. package/dist/runtime-api.lookup.js +4 -4
  32. package/dist/runtime-api.monitor-Bb5AaRzg.js +6 -0
  33. package/dist/runtime-api.monitor.js +4 -4
  34. package/dist/runtime-api.send.js +5 -5
  35. package/dist/runtime-api.threads.js +3 -3
  36. package/dist/{runtime-CkdyyjTb.js → runtime-ywXByivr.js} +7 -7
  37. package/dist/{send-CIhsDMqs.js → send-Dc5uQX5H.js} +3 -3
  38. package/dist/{send.components-DxoGyTkn.js → send.components-D4bl20xr.js} +4 -4
  39. package/dist/{send.outbound-DaUyYuZa.js → send.outbound-5axvwLkl.js} +3 -3
  40. package/dist/{send.receipt-De_2iEWU.js → send.receipt-B21MspvT.js} +3 -2
  41. package/dist/{send.shared-gtgBGDuV.js → send.shared-9082A2sO.js} +2 -2
  42. package/dist/session-binding-contract-api.js +1 -1
  43. package/dist/setup-plugin-api.js +1 -1
  44. package/dist/{subagent-hooks-DPCipg2M.js → subagent-hooks-NTv6B4up.js} +2 -2
  45. package/dist/subagent-hooks-api.js +1 -1
  46. package/dist/{system-events-4vmuyaBF.js → system-events-BzaI1WpN.js} +1 -1
  47. package/dist/{target-resolver-CVrOhQyC.js → target-resolver-agnOrtOU.js} +2 -2
  48. package/dist/targets-ClUPljCU.js +3 -0
  49. package/dist/{thread-bindings-D2SBj6F8.js → thread-bindings-DNitaHVh.js} +4 -4
  50. package/dist/{thread-bindings.discord-api-C7STOVXm.js → thread-bindings.discord-api-CjYNuvZa.js} +4 -4
  51. package/dist/{thread-bindings.manager-CN4MIGoJ.js → thread-bindings.manager-PZvJ4TJx.js} +3 -3
  52. package/dist/{transcripts-source-39NBdNeE.js → transcripts-source-Bi8N6h5X.js} +1 -1
  53. package/dist/transcripts-source-api.js +1 -1
  54. package/dist/{typing-CxIYS3vQ.js → typing-BdRqXUN3.js} +1 -1
  55. package/npm-shrinkwrap.json +3 -3
  56. package/openclaw.plugin.json +4 -0
  57. package/package.json +6 -5
  58. package/skills/discord/SKILL.md +136 -0
  59. package/dist/provider.runtime-Bz_Z6Iop.js +0 -2
  60. package/dist/runtime-api.monitor-Cv5KB0eR.js +0 -6
  61. package/dist/targets-CRGgRKs7.js +0 -3
@@ -1,6 +1,6 @@
1
- import { Ht as parseDiscordTarget, Wt as __exportAll, r as allowFromContainsDiscordUserId } from "./send.receipt-De_2iEWU.js";
1
+ import { Ht as parseDiscordTarget, Wt as __exportAll, r as allowFromContainsDiscordUserId } from "./send.receipt-B21MspvT.js";
2
2
  import { c as resolveDiscordAccountAllowFrom, s as resolveDiscordAccount } from "./accounts-P19jm1lf.js";
3
- import { i as rememberDiscordDirectoryUser, r as listDiscordDirectoryPeersLive } from "./directory-live-BAJw6kS2.js";
3
+ import { i as rememberDiscordDirectoryUser, r as listDiscordDirectoryPeersLive } from "./directory-live-DP3CmwGf.js";
4
4
  import { buildMessagingTarget } from "openclaw/plugin-sdk/channel-targets";
5
5
  //#region extensions/discord/src/send-target-parsing.ts
6
6
  const parseDiscordSendTarget = (raw, options = {}) => parseDiscordTarget(raw, options);
@@ -0,0 +1,3 @@
1
+ import "./send.receipt-B21MspvT.js";
2
+ import "./target-resolver-agnOrtOU.js";
3
+ export {};
@@ -1,9 +1,9 @@
1
- import { Ht as parseDiscordTarget, Wt as __exportAll } from "./send.receipt-De_2iEWU.js";
2
- import "./targets-CRGgRKs7.js";
1
+ import { Ht as parseDiscordTarget, Wt as __exportAll } from "./send.receipt-B21MspvT.js";
2
+ import "./targets-ClUPljCU.js";
3
3
  import { A as shouldPersistBindingMutations, C as resolveThreadBindingIdleTimeoutMs$1, D as saveBindingsToDisk, E as resolveThreadBindingMaxAgeMs$1, T as resolveThreadBindingMaxAgeExpiresAt, d as isRecentlyUnboundThreadWebhookMessage, g as rememberRecentUnboundWebhookEcho, h as normalizeThreadId, n as MANAGERS_BY_ACCOUNT_ID, t as BINDINGS_BY_THREAD_ID, u as getThreadBindingToken, w as resolveThreadBindingInactivityExpiresAt, y as removeBindingRecord } from "./thread-bindings.state-iSWjCYjB.js";
4
4
  import { n as setThreadBindingMaxAgeBySessionKey, r as resolveBindingIdsForTargetSession, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-Chs3HgGa.js";
5
- import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, s as resolveChannelIdForBinding, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-C7STOVXm.js";
6
- import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-CN4MIGoJ.js";
5
+ import { _ as formatThreadBindingDurationLabel, b as resolveThreadBindingThreadName, g as resolveThreadBindingPersonaFromRecord, h as resolveThreadBindingPersona, s as resolveChannelIdForBinding, y as resolveThreadBindingIntroText } from "./thread-bindings.discord-api-CjYNuvZa.js";
6
+ import { i as testing, n as createThreadBindingManager, r as getThreadBindingManager, t as createNoopThreadBindingManager } from "./thread-bindings.manager-PZvJ4TJx.js";
7
7
  import { normalizeOptionalLowercaseString, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
9
9
  import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
@@ -1,7 +1,7 @@
1
- import { Ut as resolveDiscordChannelId, pt as getChannel, tt as createChannelWebhook } from "./send.receipt-De_2iEWU.js";
2
- import { I as createDiscordRestClient } from "./send.shared-gtgBGDuV.js";
3
- import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-CIhsDMqs.js";
4
- import { t as sendMessageDiscord } from "./send.outbound-DaUyYuZa.js";
1
+ import { Ut as resolveDiscordChannelId, pt as getChannel, tt as createChannelWebhook } from "./send.receipt-B21MspvT.js";
2
+ import { I as createDiscordRestClient } from "./send.shared-9082A2sO.js";
3
+ import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-Dc5uQX5H.js";
4
+ import { t as sendMessageDiscord } from "./send.outbound-5axvwLkl.js";
5
5
  import { M as toReusableWebhookKey, _ as rememberReusableWebhook, i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, t as BINDINGS_BY_THREAD_ID } from "./thread-bindings.state-iSWjCYjB.js";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { ChannelType } from "discord-api-types/v10";
@@ -1,7 +1,7 @@
1
- import { Ut as resolveDiscordChannelId, Wt as __exportAll, pt as getChannel } from "./send.receipt-De_2iEWU.js";
2
- import { I as createDiscordRestClient } from "./send.shared-gtgBGDuV.js";
1
+ import { Ut as resolveDiscordChannelId, Wt as __exportAll, pt as getChannel } from "./send.receipt-B21MspvT.js";
2
+ import { I as createDiscordRestClient } from "./send.shared-9082A2sO.js";
3
3
  import { C as resolveThreadBindingIdleTimeoutMs$1, D as saveBindingsToDisk, E as resolveThreadBindingMaxAgeMs$1, F as THREAD_BINDINGS_SWEEP_INTERVAL_MS, N as DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS, O as setBindingRecord, S as resolveBindingRecordKey, T as resolveThreadBindingMaxAgeExpiresAt, b as resetThreadBindingsForTests, c as ensureBindingsLoaded, g as rememberRecentUnboundWebhookEcho, h as normalizeThreadId, k as shouldDefaultPersist, l as forgetThreadBindingToken, m as normalizeThreadBindingDurationMs, n as MANAGERS_BY_ACCOUNT_ID, p as normalizeTargetKind, r as PERSIST_BY_ACCOUNT_ID, s as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, t as BINDINGS_BY_THREAD_ID, u as getThreadBindingToken, v as rememberThreadBindingToken, w as resolveThreadBindingInactivityExpiresAt, x as resolveBindingIdsForSession, y as removeBindingRecord } from "./thread-bindings.state-iSWjCYjB.js";
4
- import { a as isThreadArchived, b as resolveThreadBindingThreadName, c as summarizeDiscordError, i as isDiscordThreadGoneError, n as createWebhookForChannel, o as maybeSendBindingMessage, r as findReusableWebhook, s as resolveChannelIdForBinding, t as createThreadForBinding, v as resolveThreadBindingFarewellText } from "./thread-bindings.discord-api-C7STOVXm.js";
4
+ import { a as isThreadArchived, b as resolveThreadBindingThreadName, c as summarizeDiscordError, i as isDiscordThreadGoneError, n as createWebhookForChannel, o as maybeSendBindingMessage, r as findReusableWebhook, s as resolveChannelIdForBinding, t as createThreadForBinding, v as resolveThreadBindingFarewellText } from "./thread-bindings.discord-api-CjYNuvZa.js";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { normalizeAccountId, resolveAgentIdFromSessionKey } from "openclaw/plugin-sdk/routing";
7
7
  import { getRuntimeConfigSnapshot } from "openclaw/plugin-sdk/runtime-config-snapshot";
@@ -1,4 +1,4 @@
1
- import { Wt as __exportAll } from "./send.receipt-De_2iEWU.js";
1
+ import { Wt as __exportAll } from "./send.receipt-B21MspvT.js";
2
2
  //#region extensions/discord/src/voice/transcripts-source.ts
3
3
  var transcripts_source_exports = /* @__PURE__ */ __exportAll({
4
4
  discordVoiceTranscriptsSourceProvider: () => discordVoiceTranscriptsSourceProvider,
@@ -1,2 +1,2 @@
1
- import { t as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-39NBdNeE.js";
1
+ import { t as discordVoiceTranscriptsSourceProvider } from "./transcripts-source-Bi8N6h5X.js";
2
2
  export { discordVoiceTranscriptsSourceProvider };
@@ -1,4 +1,4 @@
1
- import { Wt as __exportAll, bt as sendChannelTyping } from "./send.receipt-De_2iEWU.js";
1
+ import { Wt as __exportAll, bt as sendChannelTyping } from "./send.receipt-B21MspvT.js";
2
2
  import { l as raceWithTimeout } from "./timeouts-C5TBc_9x.js";
3
3
  //#region extensions/discord/src/monitor/typing.ts
4
4
  var typing_exports = /* @__PURE__ */ __exportAll({ sendTyping: () => sendTyping });
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.6.10",
3
+ "version": "2026.6.11",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/discord",
9
- "version": "2026.6.10",
9
+ "version": "2026.6.11",
10
10
  "dependencies": {
11
11
  "@discordjs/voice": "0.19.2",
12
12
  "discord-api-types": "0.38.48",
@@ -16,7 +16,7 @@
16
16
  "ws": "8.21.0"
17
17
  },
18
18
  "peerDependencies": {
19
- "openclaw": ">=2026.6.10"
19
+ "openclaw": ">=2026.6.11"
20
20
  },
21
21
  "peerDependenciesMeta": {
22
22
  "openclaw": {
@@ -2,6 +2,10 @@
2
2
  "id": "discord",
3
3
  "name": "Discord",
4
4
  "description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
5
+ "icon": "https://cdn.simpleicons.org/discord",
6
+ "skills": [
7
+ "./skills"
8
+ ],
5
9
  "activation": {
6
10
  "onStartup": false
7
11
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/discord",
3
- "version": "2026.6.10",
3
+ "version": "2026.6.11",
4
4
  "description": "OpenClaw Discord channel plugin for channels, DMs, commands, and app events.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -16,7 +16,7 @@
16
16
  "ws": "8.21.0"
17
17
  },
18
18
  "peerDependencies": {
19
- "openclaw": ">=2026.6.10"
19
+ "openclaw": ">=2026.6.11"
20
20
  },
21
21
  "peerDependenciesMeta": {
22
22
  "openclaw": {
@@ -63,10 +63,10 @@
63
63
  "allowInvalidConfigRecovery": true
64
64
  },
65
65
  "compat": {
66
- "pluginApi": ">=2026.6.10"
66
+ "pluginApi": ">=2026.6.11"
67
67
  },
68
68
  "build": {
69
- "openclawVersion": "2026.6.10"
69
+ "openclawVersion": "2026.6.11"
70
70
  },
71
71
  "release": {
72
72
  "publishToClawHub": true,
@@ -81,7 +81,8 @@
81
81
  "dist/**",
82
82
  "openclaw.plugin.json",
83
83
  "npm-shrinkwrap.json",
84
- "README.md"
84
+ "README.md",
85
+ "skills/**"
85
86
  ],
86
87
  "bundledDependencies": [
87
88
  "@discordjs/voice",
@@ -0,0 +1,136 @@
1
+ ---
2
+ name: discord
3
+ description: "Discord message-tool ops: send/read/edit/delete, react, poll, pin, thread, search, presence, media/components."
4
+ metadata: { "openclaw": { "emoji": "🎮", "requires": { "config": ["channels.discord.token"] } } }
5
+ allowed-tools: ["message"]
6
+ ---
7
+
8
+ # Discord
9
+
10
+ Use the `message` tool with `channel: "discord"`. No separate Discord tool.
11
+
12
+ ## Rules
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`.
21
+
22
+ ## Common actions
23
+
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:
43
+
44
+ ```json
45
+ {
46
+ "action": "send",
47
+ "channel": "discord",
48
+ "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"
75
+ }
76
+ ```
77
+
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
+ ```
@@ -1,2 +0,0 @@
1
- import { t as monitorDiscordProvider } from "./provider-Cqe8M2zT.js";
2
- export { monitorDiscordProvider };
@@ -1,6 +0,0 @@
1
- import "./allow-list-C-MqM-B_.js";
2
- import "./timeouts-C5TBc_9x.js";
3
- import "./provider-Cqe8M2zT.js";
4
- import "./message-utils-ConlUKCU.js";
5
- import "./message-handler-1sY7wU_a.js";
6
- export {};
@@ -1,3 +0,0 @@
1
- import "./send.receipt-De_2iEWU.js";
2
- import "./target-resolver-CVrOhQyC.js";
3
- export {};