@openclaw/discord 2026.9.1-beta.1 → 2026.9.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/dist/account-inspect-BY-ve3yH.js +45 -0
- package/dist/account-inspect-api.js +1 -1
- package/dist/{accounts-CfQ-vSyf.js → accounts-CwJQoLjM.js} +89 -45
- package/dist/action-runtime-api.js +1 -1
- package/dist/{activities-api-q-9PaaHH.js → activities-api-E-segZn6.js} +30 -17
- package/dist/activities-api.js +1 -1
- package/dist/{allow-list-BDMimASD.js → allow-list-C2JuH-R0.js} +10 -6
- package/dist/{api-DNVbJyEy.js → api-BfmEP6wp.js} +6 -5
- package/dist/api.js +18 -18
- package/dist/{approval-handler.runtime-B7qhK3fR.js → approval-handler.runtime-CW5k3mSa.js} +19 -12
- package/dist/{audit-CBEv_ERu.js → audit-B9rydv5a.js} +8 -7
- package/dist/{channel-Dx1tMTfx.js → channel-D93LnbTE.js} +29 -23
- package/dist/{channel-actions.runtime-CLWWu9nC.js → channel-actions.runtime-DMFv4doE.js} +16 -13
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.setup-DOzXS2Pk.js → channel.setup-DTL7kPOM.js} +18 -18
- package/dist/{components-B9V5o361.js → components-DmXYIQ26.js} +111 -149
- package/dist/{config-schema-BR13IAx6.js → config-schema-B797-Spt.js} +19 -12
- package/dist/{conversation-binding-route-DJYrY2TQ.js → conversation-binding-route-24afmvEC.js} +1 -1
- package/dist/{directory-config-BK6eqekJ.js → directory-config-BD4YL7wT.js} +2 -2
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-DSAJSrJk.js → directory-live-BrFVc1Ds.js} +4 -4
- package/dist/{doctor-Cm7Y1pJ2.js → doctor-BUB41_lr.js} +5 -5
- package/dist/{doctor-contract-DsWvKIXF.js → doctor-contract-Co5vRCZ6.js} +9 -6
- package/dist/doctor-contract-api.js +3 -2
- package/dist/{handle-action.guild-admin-BdwCRHmm.js → handle-action.guild-admin-B0egstYq.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/ingress-identity-BCzfPPYM.js +60 -0
- package/dist/{message-handler-BXpWZyni.js → message-handler-Qdw9c0j4.js} +14 -10
- package/dist/{message-handler.preflight-Ba5LAY_X.js → message-handler.preflight-Dxi2yBfR.js} +41 -101
- package/dist/{message-handler.process-3HEzmemS.js → message-handler.process-BYDjtxZJ.js} +83 -109
- package/dist/{message-text-aiwO5R2F.js → message-text-BRVqYm-t.js} +11 -6
- package/dist/{outbound-adapter-BE4jSq2d.js → outbound-adapter-DEhthWTk.js} +52 -67
- package/dist/{outbound-components-oLpg8Qzb.js → outbound-components-DehyxvA4.js} +5 -4
- package/dist/{outbound-session-route-Cg15ZFJd.js → outbound-session-route-BFGRF9fE.js} +55 -12
- package/dist/{owner-access-UlYi9t0M.js → owner-access-yc1sX7Gx.js} +7 -6
- package/dist/{pluralkit-Tiyl70dx.js → pluralkit-XmmAHoV6.js} +2 -2
- package/dist/{probe-n6ZXxK8V.js → probe-3ovFAp3b.js} +3 -3
- package/dist/{probe.runtime-CN4bdPfZ.js → probe.runtime-BckHn3cJ.js} +1 -1
- package/dist/{provider-B11xwilq.js → provider-DuDtKbF8.js} +294 -131
- package/dist/{provider-session.runtime-B9xe-Qaf.js → provider-session.runtime-BA2BPyZ4.js} +3 -3
- package/dist/provider.runtime-Db8YwZBv.js +2 -0
- package/dist/{realtime-session.runtime-CU8IQUS-.js → realtime-session.runtime-DgSbX6ay.js} +103 -163
- package/dist/{resolve-allowlist-common-BLoYaxEG.js → resolve-allowlist-common-BJ5UZNNT.js} +3 -3
- package/dist/{resolve-channels-C2sT_n67.js → resolve-channels-CYseD5Uw.js} +4 -4
- package/dist/{resolve-users-CzpjLwjy.js → resolve-users-DrmhDrqm.js} +5 -4
- package/dist/{retry-Cv4jCU5Z.js → retry-BNCxiyyR.js} +120 -32
- package/dist/{retry-after-DdLPmPoa.js → retry-after-BrLjLUJi.js} +2 -1
- package/dist/{runtime-BHrTlFkf.js → runtime-BbWNtfyq.js} +127 -93
- package/dist/{runtime-CY4PRMF-.js → runtime-DB7Fb6AU.js} +2 -2
- package/dist/runtime-api.js +19 -19
- package/dist/{secret-config-contract-B3i6WxV5.js → secret-config-contract-DFu9hfU8.js} +14 -6
- package/dist/secret-contract-api.js +1 -1
- package/dist/{security-audit-BfJhAXZp.js → security-audit-DKfK-iPY.js} +10 -11
- package/dist/security-audit-contract-api.js +1 -1
- package/dist/{security-audit.runtime-BVKF9VtY.js → security-audit.runtime-sKZyKgpx.js} +1 -1
- package/dist/{send-C49MFF9j.js → send-BnTEIeLE.js} +132 -100
- package/dist/{send.components-DKKAw5VX.js → send.components-BWVEcjRP.js} +21 -15
- package/dist/{send.outbound-zam0TrZx.js → send.outbound-b5xwHTlL.js} +35 -22
- package/dist/{send.shared-JjljcV4O.js → send.shared-5vxBTagO.js} +25 -18
- package/dist/{sender-identity-BJtfyise.js → sender-identity-Dt0imZyY.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{shared-_5EcP4jW.js → shared-BSJWHEMA.js} +20 -14
- package/dist/{subagent-hooks-DQzvOptn.js → subagent-hooks-IzQKX4RQ.js} +2 -2
- package/dist/subagent-hooks-api.js +1 -1
- package/dist/{system-events-C7yxaHWP.js → system-events-BOiDS8b3.js} +2 -2
- package/dist/{target-resolver-vxIh6O3-.js → target-resolver-BVI8xSSC.js} +6 -5
- package/dist/targets-DbxVbq8k.js +3 -0
- package/dist/{thread-bindings-DW5F9vat.js → thread-bindings-D7mcaXQC.js} +6 -5
- package/dist/{thread-bindings.manager-ByOtwjo_.js → thread-bindings.manager-B1oySiVc.js} +37 -28
- package/dist/{thread-bindings.session-updates-CJb-BpPL.js → thread-bindings.session-updates-CC7HoQvt.js} +2 -1
- package/dist/{threading-agH1T_6s.js → threading-OQnL-0Zx.js} +8 -6
- package/dist/{timeouts-B9cy6RvQ.js → timeouts-D86uWLt_.js} +1 -1
- package/dist/{transcripts-source-BR11iHA4.js → transcripts-source-D8lH7AkN.js} +9 -4
- package/dist/transcripts-source-api.js +1 -1
- package/dist/{typing-Dc_YMY2e.js → typing-C9q0AQMb.js} +2 -2
- package/dist/{voice-runtime-DIeaa8fJ.js → voice-runtime-Dfhjh1tV.js} +433 -93
- package/node_modules/@discord/embedded-app-sdk/node_modules/@types/lodash/README.md +1 -1
- package/node_modules/@discord/embedded-app-sdk/node_modules/@types/lodash/conforms.d.ts +2 -0
- package/node_modules/@discord/embedded-app-sdk/node_modules/@types/lodash/package.json +3 -3
- package/node_modules/@discord/embedded-app-sdk/node_modules/@types/lodash/stubArray.d.ts +2 -0
- package/node_modules/@discord/embedded-app-sdk/node_modules/@types/lodash/stubObject.d.ts +2 -0
- package/node_modules/@discord/embedded-app-sdk/node_modules/@types/lodash/stubString.d.ts +2 -0
- package/node_modules/typebox/build/format/email.mjs +1 -1
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +19 -1
- package/node_modules/typebox/package.json +1 -1
- package/openclaw.plugin.json +14 -6
- package/package.json +6 -5
- package/skills/discord/SKILL.md +1 -1
- package/dist/account-inspect-BDfKyuvL.js +0 -89
- package/dist/provider.runtime-DiYaHvOz.js +0 -2
- package/dist/sdk-runtime-4geQHtXc.js +0 -338
- package/dist/targets-CtTKvntJ.js +0 -3
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as resolveDiscordAccount, i as listDiscordStartupAccountIds, l as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId } from "./accounts-
|
|
1
|
+
import { g as normalizeDiscordMessagingTarget, h as looksLikeDiscordTargetId, v as parseDiscordTarget } from "./retry-BNCxiyyR.js";
|
|
2
|
+
import { c as resolveDiscordAccount, i as listDiscordStartupAccountIds, l as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId } from "./accounts-CwJQoLjM.js";
|
|
3
3
|
import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.js";
|
|
4
|
-
import { u as withAbortTimeout } from "./timeouts-
|
|
5
|
-
import { C as shouldSuppressLocalDiscordExecApprovalPrompt, D as isChannelExecApprovalClientEnabledFromConfig, E as createChannelNativeOriginTargetResolver, O as matchesApprovalRequestFilters, S as isDiscordExecApprovalClientEnabled, T as createChannelApproverDmTargetResolver, b as getDiscordExecApprovalApprovers, d as resolveDiscordCurrentConversationIdentity, f as resolveDiscordRuntimeBindingConversationId, p as discordMessageActions, s as resolveDiscordConversationRoute, t as resolveDiscordOutboundSessionRoute, w as createApproverRestrictedNativeApprovalCapability, x as isDiscordExecApprovalApprover, y as resolveRequiredDiscordChannelPermissions } from "./outbound-session-route-
|
|
6
|
-
import { a as discordSecurityAdapter, c as buildTokenChannelStatusSummary, i as discordSetupContract, l as projectCredentialSnapshotFields, n as discordConfigAdapter, o as DEFAULT_ACCOUNT_ID, s as PAIRING_APPROVED_MESSAGE, t as createDiscordPluginBase, u as resolveConfiguredFromCredentialStatuses } from "./shared-
|
|
4
|
+
import { u as withAbortTimeout } from "./timeouts-D86uWLt_.js";
|
|
5
|
+
import { C as shouldSuppressLocalDiscordExecApprovalPrompt, D as isChannelExecApprovalClientEnabledFromConfig, E as createChannelNativeOriginTargetResolver, O as matchesApprovalRequestFilters, S as isDiscordExecApprovalClientEnabled, T as createChannelApproverDmTargetResolver, b as getDiscordExecApprovalApprovers, d as resolveDiscordCurrentConversationIdentity, f as resolveDiscordRuntimeBindingConversationId, p as discordMessageActions, s as resolveDiscordConversationRoute, t as resolveDiscordOutboundSessionRoute, w as createApproverRestrictedNativeApprovalCapability, x as isDiscordExecApprovalApprover, y as resolveRequiredDiscordChannelPermissions } from "./outbound-session-route-BFGRF9fE.js";
|
|
6
|
+
import { a as discordSecurityAdapter, c as buildTokenChannelStatusSummary, i as discordSetupContract, l as projectCredentialSnapshotFields, n as discordConfigAdapter, o as DEFAULT_ACCOUNT_ID, s as PAIRING_APPROVED_MESSAGE, t as createDiscordPluginBase, u as resolveConfiguredFromCredentialStatuses } from "./shared-BSJWHEMA.js";
|
|
7
7
|
import { r as openDiscordCommandDeployHashStore } from "./command-deploy-store-DFkBTViB.js";
|
|
8
|
-
import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-
|
|
9
|
-
import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-
|
|
10
|
-
import { n as discordOutbound } from "./outbound-adapter-
|
|
8
|
+
import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-24afmvEC.js";
|
|
9
|
+
import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-CC7HoQvt.js";
|
|
10
|
+
import { n as discordOutbound } from "./outbound-adapter-DEhthWTk.js";
|
|
11
11
|
import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.js";
|
|
12
12
|
import { t as defaultTopLevelPlacement } from "./thread-binding-api-BDZJD4na.js";
|
|
13
13
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
@@ -180,7 +180,11 @@ function createDiscordApprovalCapability(configOverride) {
|
|
|
180
180
|
resolveApproverDmTargets: createDiscordApproverDmTargetResolver(configOverride),
|
|
181
181
|
notifyOriginWhenDmOnly: true,
|
|
182
182
|
nativeRuntime: createLazyChannelApprovalNativeRuntimeAdapter({
|
|
183
|
-
eventKinds: [
|
|
183
|
+
eventKinds: [
|
|
184
|
+
"exec",
|
|
185
|
+
"plugin",
|
|
186
|
+
"system-agent"
|
|
187
|
+
],
|
|
184
188
|
isConfigured: ({ cfg, accountId }) => isDiscordExecApprovalClientEnabled({
|
|
185
189
|
cfg,
|
|
186
190
|
accountId,
|
|
@@ -192,7 +196,7 @@ function createDiscordApprovalCapability(configOverride) {
|
|
|
192
196
|
request,
|
|
193
197
|
configOverride
|
|
194
198
|
}),
|
|
195
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
199
|
+
load: async () => (await import("./approval-handler.runtime-CW5k3mSa.js")).discordApprovalNativeRuntime
|
|
196
200
|
})
|
|
197
201
|
});
|
|
198
202
|
}
|
|
@@ -299,22 +303,22 @@ function resolveDiscordInboundConversation(params) {
|
|
|
299
303
|
}
|
|
300
304
|
//#endregion
|
|
301
305
|
//#region extensions/discord/src/channel.loaders.ts
|
|
302
|
-
const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-
|
|
303
|
-
const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-
|
|
304
|
-
const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-
|
|
305
|
-
const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-
|
|
306
|
-
const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-
|
|
307
|
-
const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-
|
|
308
|
-
const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe.runtime-
|
|
306
|
+
const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-BD4YL7wT.js").then((n) => n.t));
|
|
307
|
+
const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-CYseD5Uw.js").then((n) => n.n));
|
|
308
|
+
const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-DrmhDrqm.js").then((n) => n.n));
|
|
309
|
+
const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-B1oySiVc.js").then((n) => n.i));
|
|
310
|
+
const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-BVI8xSSC.js").then((n) => n.r));
|
|
311
|
+
const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-Db8YwZBv.js"));
|
|
312
|
+
const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe.runtime-BckHn3cJ.js"));
|
|
309
313
|
async function probeDiscordStatusAccount(params) {
|
|
310
314
|
const startedAtMs = Date.now();
|
|
311
315
|
const runtime = await loadDiscordProbeRuntime();
|
|
312
316
|
const remainingMs = Math.max(1, params.timeoutMs - Math.max(0, Date.now() - startedAtMs));
|
|
313
317
|
return await runtime.probeDiscord(params.token, remainingMs, { includeApplication: true });
|
|
314
318
|
}
|
|
315
|
-
const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-
|
|
316
|
-
const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-
|
|
317
|
-
const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-
|
|
319
|
+
const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-B9rydv5a.js").then((n) => n.n));
|
|
320
|
+
const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-BnTEIeLE.js").then((n) => n.t));
|
|
321
|
+
const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-BrFVc1Ds.js").then((n) => n.t));
|
|
318
322
|
//#endregion
|
|
319
323
|
//#region extensions/discord/src/conversation-route-owner.ts
|
|
320
324
|
function inspectDiscordConversationRouteOwner(params) {
|
|
@@ -426,8 +430,9 @@ function resolveDiscordGroupRequireMention(params) {
|
|
|
426
430
|
return resolveScopeRequireMention(resolveDiscordPolicyScope(params));
|
|
427
431
|
}
|
|
428
432
|
function resolveDiscordGroupToolPolicy(params) {
|
|
433
|
+
const scope = resolveDiscordPolicyScope(params);
|
|
429
434
|
return resolveScopeToolsPolicy({
|
|
430
|
-
...
|
|
435
|
+
...scope,
|
|
431
436
|
senderPolicyMode: params.senderPolicyMode,
|
|
432
437
|
senderId: params.senderId,
|
|
433
438
|
senderName: params.senderName,
|
|
@@ -764,10 +769,11 @@ const discordPlugin = createChatChannelPlugin({
|
|
|
764
769
|
}).map(toConversationLifecycleBinding)
|
|
765
770
|
},
|
|
766
771
|
heartbeat: { sendTyping: async ({ cfg, to, accountId, threadId }) => {
|
|
767
|
-
const
|
|
772
|
+
const resolvedTo = resolveDiscordAttachedOutboundTarget({
|
|
768
773
|
to,
|
|
769
774
|
threadId
|
|
770
|
-
})
|
|
775
|
+
});
|
|
776
|
+
const target = parseDiscordTarget(resolvedTo, { defaultKind: "channel" });
|
|
771
777
|
if (!target || target.kind !== "channel") return;
|
|
772
778
|
await (await loadDiscordSendModule()).sendTypingDiscord(target.id, {
|
|
773
779
|
cfg,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as buildDiscordPresentationComponents, r as buildDiscordInteractiveComponents } from "./components-
|
|
3
|
-
import { a as readDiscordAutoArchiveDurationParam, t as handleDiscordAction } from "./runtime-
|
|
4
|
-
import "./targets-
|
|
1
|
+
import { v as parseDiscordTarget, y as resolveDiscordChannelId } from "./retry-BNCxiyyR.js";
|
|
2
|
+
import { i as buildDiscordPresentationComponents, m as coerceDiscordComponentParam, r as buildDiscordInteractiveComponents } from "./components-DmXYIQ26.js";
|
|
3
|
+
import { a as readDiscordAutoArchiveDurationParam, t as handleDiscordAction } from "./runtime-BbWNtfyq.js";
|
|
4
|
+
import "./targets-DbxVbq8k.js";
|
|
5
5
|
import "./action-runtime-api.js";
|
|
6
|
-
import { h as discordInboundEventDelivery } from "./outbound-session-route-
|
|
7
|
-
import { r as isDiscordComponentSpecWithinMessageLimit, t as DISCORD_PRESENTATION_CAPABILITIES } from "./outbound-components-
|
|
8
|
-
import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-
|
|
6
|
+
import { h as discordInboundEventDelivery } from "./outbound-session-route-BFGRF9fE.js";
|
|
7
|
+
import { r as isDiscordComponentSpecWithinMessageLimit, t as DISCORD_PRESENTATION_CAPABILITIES } from "./outbound-components-DehyxvA4.js";
|
|
8
|
+
import { t as tryHandleDiscordMessageActionGuildAdmin } from "./handle-action.guild-admin-B0egstYq.js";
|
|
9
9
|
import { n as notifyDiscordActiveTurnThreadCreated, r as notifyDiscordActiveTurnThreadReplyDelivered } from "./active-turn-thread-route-fmHl1HNd.js";
|
|
10
10
|
import { normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
11
11
|
import { adaptMessagePresentationForChannel, normalizeLegacyInteractiveReply, normalizeMessagePresentation, renderMessagePresentationFallbackText } from "openclaw/plugin-sdk/interactive-runtime";
|
|
@@ -88,18 +88,20 @@ async function handleDiscordMessageAction(ctx) {
|
|
|
88
88
|
const asVoice = readBooleanParam(params, "asVoice") === true;
|
|
89
89
|
const mediaUrl = readStringParam$1(params, "media", { trim: false }) ?? readStringParam$1(params, "path", { trim: false }) ?? readStringParam$1(params, "filePath", { trim: false });
|
|
90
90
|
const requestedContent = readStringParam$1(params, "message", { allowEmpty: true });
|
|
91
|
-
const
|
|
92
|
-
const
|
|
91
|
+
const explicitComponents = coerceDiscordComponentParam(params.components);
|
|
92
|
+
const presentation = explicitComponents == null ? normalizeMessagePresentation(params.presentation) : void 0;
|
|
93
|
+
const adaptedPresentation = presentation ? adaptMessagePresentationForChannel({
|
|
93
94
|
presentation,
|
|
94
95
|
capabilities: DISCORD_PRESENTATION_CAPABILITIES
|
|
95
|
-
}) : void 0
|
|
96
|
+
}) : void 0;
|
|
97
|
+
const generatedPresentationComponents = buildDiscordPresentationComponents(adaptedPresentation);
|
|
96
98
|
const presentationComponents = generatedPresentationComponents && isDiscordComponentSpecWithinMessageLimit({
|
|
97
99
|
spec: generatedPresentationComponents,
|
|
98
100
|
fallbackText: requestedContent,
|
|
99
101
|
includesMedia: Boolean(mediaUrl)
|
|
100
102
|
}) ? generatedPresentationComponents : void 0;
|
|
101
103
|
const presentationFellBack = Boolean(generatedPresentationComponents && !presentationComponents);
|
|
102
|
-
const rawComponents = presentationFellBack ? void 0 :
|
|
104
|
+
const rawComponents = presentationFellBack ? void 0 : explicitComponents ?? presentationComponents ?? buildDiscordInteractiveComponents(normalizeLegacyInteractiveReply(params.interactive));
|
|
103
105
|
const hasComponents = Boolean(rawComponents) && (typeof rawComponents === "function" || typeof rawComponents === "object");
|
|
104
106
|
const components = hasComponents ? rawComponents : void 0;
|
|
105
107
|
const rawEmbeds = params.embeds;
|
|
@@ -170,10 +172,11 @@ async function handleDiscordMessageAction(ctx) {
|
|
|
170
172
|
return withAdoptedThreadReplyRoute(result, to, sessionKey);
|
|
171
173
|
}
|
|
172
174
|
if (action === "react") {
|
|
173
|
-
const
|
|
175
|
+
const messageIdRaw = resolveReactionMessageId({
|
|
174
176
|
args: params,
|
|
175
177
|
toolContext: ctx.toolContext
|
|
176
|
-
})
|
|
178
|
+
});
|
|
179
|
+
const messageId = normalizeOptionalStringifiedId(messageIdRaw) ?? "";
|
|
177
180
|
if (!messageId) throw new Error("messageId required. Provide messageId explicitly or react to the current inbound message.");
|
|
178
181
|
const emoji = readStringParam$1(params, "emoji", { allowEmpty: true });
|
|
179
182
|
const remove = readBooleanParam(params, "remove");
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as DiscordChannelConfigSchema } from "./config-schema-
|
|
1
|
+
import { t as DiscordChannelConfigSchema } from "./config-schema-B797-Spt.js";
|
|
2
2
|
export { DiscordChannelConfigSchema };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as discordPlugin } from "./channel-
|
|
1
|
+
import { t as discordPlugin } from "./channel-D93LnbTE.js";
|
|
2
2
|
export { discordPlugin };
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { h as resolveDiscordToken, l as resolveDiscordAccountAllowFrom, o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as resolveDiscordUserAllowlist } from "./resolve-users-CzpjLwjy.js";
|
|
1
|
+
import { _ as inspectDiscordAccountTokenState, h as resolveDiscordToken, l as resolveDiscordAccountAllowFrom, o as mergeDiscordAccountConfig, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-CwJQoLjM.js";
|
|
2
|
+
import { i as discordSetupContract, t as createDiscordPluginBase } from "./shared-BSJWHEMA.js";
|
|
3
|
+
import { t as resolveDiscordChannelAllowlist } from "./resolve-channels-CYseD5Uw.js";
|
|
4
|
+
import { t as resolveDiscordUserAllowlist } from "./resolve-users-DrmhDrqm.js";
|
|
6
5
|
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
7
6
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
7
|
import { resolveBasicAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
|
|
@@ -279,22 +278,23 @@ async function resolveDiscordGroupAllowlist(params) {
|
|
|
279
278
|
})
|
|
280
279
|
});
|
|
281
280
|
}
|
|
281
|
+
const discordSetupWizard = createDiscordSetupWizardBase({
|
|
282
|
+
promptAllowFrom: promptDiscordAllowFrom,
|
|
283
|
+
resolveAllowFromEntries: async ({ cfg, accountId, credentialValues, entries }) => await resolveDiscordAllowFromEntries({
|
|
284
|
+
token: resolveDiscordToken(cfg, { accountId }).token || (typeof credentialValues.token === "string" ? credentialValues.token : ""),
|
|
285
|
+
entries
|
|
286
|
+
}),
|
|
287
|
+
resolveGroupAllowlist: async ({ cfg, accountId, credentialValues, entries }) => await resolveDiscordGroupAllowlist({
|
|
288
|
+
cfg,
|
|
289
|
+
accountId,
|
|
290
|
+
credentialValues,
|
|
291
|
+
entries
|
|
292
|
+
})
|
|
293
|
+
});
|
|
282
294
|
//#endregion
|
|
283
295
|
//#region extensions/discord/src/channel.setup.ts
|
|
284
296
|
const discordSetupPlugin = { ...createDiscordPluginBase({
|
|
285
|
-
setupWizard:
|
|
286
|
-
promptAllowFrom: promptDiscordAllowFrom,
|
|
287
|
-
resolveAllowFromEntries: async ({ cfg, accountId, credentialValues, entries }) => await resolveDiscordAllowFromEntries({
|
|
288
|
-
token: resolveDiscordToken(cfg, { accountId }).token || (typeof credentialValues.token === "string" ? credentialValues.token : ""),
|
|
289
|
-
entries
|
|
290
|
-
}),
|
|
291
|
-
resolveGroupAllowlist: async ({ cfg, accountId, credentialValues, entries }) => await resolveDiscordGroupAllowlist({
|
|
292
|
-
cfg,
|
|
293
|
-
accountId,
|
|
294
|
-
credentialValues,
|
|
295
|
-
entries
|
|
296
|
-
})
|
|
297
|
-
}),
|
|
297
|
+
setupWizard: discordSetupWizard,
|
|
298
298
|
setupContract: discordSetupContract
|
|
299
299
|
}) };
|
|
300
300
|
//#endregion
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as RadioGroup, Q as Modal, X as CheckboxGroup, Z as Label, _t as parseCustomId, at as LinkButton, ct as RoleSelectMenu, dt as Separator, et as TextInput, ft as StringSelectMenu, ht as UserSelectMenu, it as File, lt as Row, mt as Thumbnail, nt as ChannelSelectMenu, ot as MediaGallery, pt as TextDisplay, rt as Container, sn as __exportAll, st as MentionableSelectMenu, tt as Button, ut as Section } from "./retry-BNCxiyyR.js";
|
|
2
2
|
import { ButtonStyle, MessageFlags, TextInputStyle } from "discord-api-types/v10";
|
|
3
3
|
import crypto from "node:crypto";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { legacyInteractiveReplyToPresentation, resolveMessagePresentationActionValue, resolveMessagePresentationButtonAction, resolveMessagePresentationOptionAction } from "openclaw/plugin-sdk/interactive-runtime";
|
|
6
|
+
import { resolveAskUserQuestionOptionIndex } from "openclaw/plugin-sdk/reply-payload";
|
|
6
7
|
import { buildApprovalResolutionRef } from "openclaw/plugin-sdk/approval-reference-runtime";
|
|
7
8
|
//#region extensions/discord/src/custom-id-codec.ts
|
|
8
9
|
/**
|
|
@@ -391,6 +392,14 @@ function parseComponentBlock(raw, label) {
|
|
|
391
392
|
default: throw new Error(`${label}.type must be a supported component block`);
|
|
392
393
|
}
|
|
393
394
|
}
|
|
395
|
+
function coerceDiscordComponentParam(raw) {
|
|
396
|
+
if (typeof raw !== "string") return raw;
|
|
397
|
+
try {
|
|
398
|
+
return JSON.parse(raw);
|
|
399
|
+
} catch {
|
|
400
|
+
return raw;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
394
403
|
function readDiscordComponentSpec(raw) {
|
|
395
404
|
if (raw === void 0 || raw === null) return null;
|
|
396
405
|
const obj = requireObject(raw, "components");
|
|
@@ -429,6 +438,46 @@ function readDiscordComponentSpec(raw) {
|
|
|
429
438
|
function createShortId(prefix) {
|
|
430
439
|
return `${prefix}${crypto.randomBytes(6).toString("base64url")}`;
|
|
431
440
|
}
|
|
441
|
+
const selectMenuConstructors = {
|
|
442
|
+
string: class extends StringSelectMenu {
|
|
443
|
+
constructor(..._args) {
|
|
444
|
+
super(..._args);
|
|
445
|
+
this.customId = "";
|
|
446
|
+
this.options = [];
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
user: class extends UserSelectMenu {
|
|
450
|
+
constructor(..._args2) {
|
|
451
|
+
super(..._args2);
|
|
452
|
+
this.customId = "";
|
|
453
|
+
}
|
|
454
|
+
},
|
|
455
|
+
role: class extends RoleSelectMenu {
|
|
456
|
+
constructor(..._args3) {
|
|
457
|
+
super(..._args3);
|
|
458
|
+
this.customId = "";
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
mentionable: class extends MentionableSelectMenu {
|
|
462
|
+
constructor(..._args4) {
|
|
463
|
+
super(..._args4);
|
|
464
|
+
this.customId = "";
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
channel: class extends ChannelSelectMenu {
|
|
468
|
+
constructor(..._args5) {
|
|
469
|
+
super(..._args5);
|
|
470
|
+
this.customId = "";
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
function createDiscordSelectMenu(type, customId, options) {
|
|
475
|
+
const SelectMenu = selectMenuConstructors[type];
|
|
476
|
+
const select = new SelectMenu();
|
|
477
|
+
select.customId = customId;
|
|
478
|
+
if (select instanceof StringSelectMenu) select.options = options ?? [];
|
|
479
|
+
return select;
|
|
480
|
+
}
|
|
432
481
|
function buildTextDisplays(text, texts) {
|
|
433
482
|
if (texts && texts.length > 0) return texts.map((entry) => new TextDisplay(entry));
|
|
434
483
|
if (text) return [new TextDisplay(text)];
|
|
@@ -440,8 +489,8 @@ function createButtonComponent(params) {
|
|
|
440
489
|
if (!params.spec.url) throw new Error("Link buttons require a url");
|
|
441
490
|
const linkUrl = params.spec.url;
|
|
442
491
|
class DynamicLinkButton extends LinkButton {
|
|
443
|
-
constructor(...
|
|
444
|
-
super(...
|
|
492
|
+
constructor(..._args6) {
|
|
493
|
+
super(..._args6);
|
|
445
494
|
this.label = params.spec.label;
|
|
446
495
|
this.url = linkUrl;
|
|
447
496
|
this.disabled = params.spec.disabled ?? false;
|
|
@@ -456,8 +505,8 @@ function createButtonComponent(params) {
|
|
|
456
505
|
modalId: params.modalId
|
|
457
506
|
});
|
|
458
507
|
class DynamicButton extends Button {
|
|
459
|
-
constructor(...
|
|
460
|
-
super(...
|
|
508
|
+
constructor(..._args7) {
|
|
509
|
+
super(..._args7);
|
|
461
510
|
this.label = params.spec.label;
|
|
462
511
|
this.customId = customId;
|
|
463
512
|
this.style = style;
|
|
@@ -484,99 +533,34 @@ function createSelectComponent(params) {
|
|
|
484
533
|
const type = normalizeLowercaseStringOrEmpty(params.spec.type ?? "string");
|
|
485
534
|
const componentId = params.componentId ?? createShortId("sel_");
|
|
486
535
|
const customId = buildDiscordComponentCustomId({ componentId });
|
|
487
|
-
const
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
}
|
|
511
|
-
return {
|
|
512
|
-
component: new DynamicStringSelect(),
|
|
513
|
-
entry: createEntry("string", params.spec.placeholder ?? "select", options.map((option) => ({
|
|
536
|
+
const options = params.spec.options ?? [];
|
|
537
|
+
if (type === "string" && options.length === 0) throw new Error("String select menus require options");
|
|
538
|
+
const select = createDiscordSelectMenu(type, customId, options);
|
|
539
|
+
select.minValues = params.spec.minValues;
|
|
540
|
+
select.maxValues = params.spec.maxValues;
|
|
541
|
+
select.placeholder = params.spec.placeholder;
|
|
542
|
+
select.disabled = false;
|
|
543
|
+
return {
|
|
544
|
+
component: select,
|
|
545
|
+
entry: {
|
|
546
|
+
id: componentId,
|
|
547
|
+
kind: "select",
|
|
548
|
+
label: params.spec.placeholder ?? {
|
|
549
|
+
string: "select",
|
|
550
|
+
user: "user select",
|
|
551
|
+
role: "role select",
|
|
552
|
+
mentionable: "mentionable select",
|
|
553
|
+
channel: "channel select"
|
|
554
|
+
}[type],
|
|
555
|
+
...params.spec.callbackData !== void 0 ? { callbackData: params.spec.callbackData } : {},
|
|
556
|
+
...params.spec.callbackDataKind !== void 0 ? { callbackDataKind: params.spec.callbackDataKind } : {},
|
|
557
|
+
selectType: type,
|
|
558
|
+
...type === "string" ? { options: options.map((option) => ({
|
|
514
559
|
value: option.value,
|
|
515
560
|
label: option.label
|
|
516
|
-
}))
|
|
517
|
-
|
|
518
|
-
}
|
|
519
|
-
if (type === "user") {
|
|
520
|
-
class DynamicUserSelect extends UserSelectMenu {
|
|
521
|
-
constructor(..._args4) {
|
|
522
|
-
super(..._args4);
|
|
523
|
-
this.customId = customId;
|
|
524
|
-
this.minValues = params.spec.minValues;
|
|
525
|
-
this.maxValues = params.spec.maxValues;
|
|
526
|
-
this.placeholder = params.spec.placeholder;
|
|
527
|
-
this.disabled = false;
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
return {
|
|
531
|
-
component: new DynamicUserSelect(),
|
|
532
|
-
entry: createEntry("user", params.spec.placeholder ?? "user select")
|
|
533
|
-
};
|
|
534
|
-
}
|
|
535
|
-
if (type === "role") {
|
|
536
|
-
class DynamicRoleSelect extends RoleSelectMenu {
|
|
537
|
-
constructor(..._args5) {
|
|
538
|
-
super(..._args5);
|
|
539
|
-
this.customId = customId;
|
|
540
|
-
this.minValues = params.spec.minValues;
|
|
541
|
-
this.maxValues = params.spec.maxValues;
|
|
542
|
-
this.placeholder = params.spec.placeholder;
|
|
543
|
-
this.disabled = false;
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
return {
|
|
547
|
-
component: new DynamicRoleSelect(),
|
|
548
|
-
entry: createEntry("role", params.spec.placeholder ?? "role select")
|
|
549
|
-
};
|
|
550
|
-
}
|
|
551
|
-
if (type === "mentionable") {
|
|
552
|
-
class DynamicMentionableSelect extends MentionableSelectMenu {
|
|
553
|
-
constructor(..._args6) {
|
|
554
|
-
super(..._args6);
|
|
555
|
-
this.customId = customId;
|
|
556
|
-
this.minValues = params.spec.minValues;
|
|
557
|
-
this.maxValues = params.spec.maxValues;
|
|
558
|
-
this.placeholder = params.spec.placeholder;
|
|
559
|
-
this.disabled = false;
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
return {
|
|
563
|
-
component: new DynamicMentionableSelect(),
|
|
564
|
-
entry: createEntry("mentionable", params.spec.placeholder ?? "mentionable select")
|
|
565
|
-
};
|
|
566
|
-
}
|
|
567
|
-
class DynamicChannelSelect extends ChannelSelectMenu {
|
|
568
|
-
constructor(..._args7) {
|
|
569
|
-
super(..._args7);
|
|
570
|
-
this.customId = customId;
|
|
571
|
-
this.minValues = params.spec.minValues;
|
|
572
|
-
this.maxValues = params.spec.maxValues;
|
|
573
|
-
this.placeholder = params.spec.placeholder;
|
|
574
|
-
this.disabled = false;
|
|
561
|
+
})) } : {},
|
|
562
|
+
...params.spec.allowedUsers !== void 0 ? { allowedUsers: params.spec.allowedUsers } : {}
|
|
575
563
|
}
|
|
576
|
-
}
|
|
577
|
-
return {
|
|
578
|
-
component: new DynamicChannelSelect(),
|
|
579
|
-
entry: createEntry("channel", params.spec.placeholder ?? "channel select")
|
|
580
564
|
};
|
|
581
565
|
}
|
|
582
566
|
function isSelectComponent(component) {
|
|
@@ -728,52 +712,19 @@ function createModalFieldComponent(field) {
|
|
|
728
712
|
}
|
|
729
713
|
return new DynamicTextInput();
|
|
730
714
|
}
|
|
731
|
-
if (field.type === "select") {
|
|
732
|
-
const
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
this.required = field.required;
|
|
739
|
-
this.minValues = field.minValues;
|
|
740
|
-
this.maxValues = field.maxValues;
|
|
741
|
-
this.placeholder = field.placeholder;
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
return new DynamicModalSelect();
|
|
745
|
-
}
|
|
746
|
-
if (field.type === "role-select") {
|
|
747
|
-
class DynamicModalRoleSelect extends RoleSelectMenu {
|
|
748
|
-
constructor(..._args3) {
|
|
749
|
-
super(..._args3);
|
|
750
|
-
this.customId = field.id;
|
|
751
|
-
this.required = field.required;
|
|
752
|
-
this.minValues = field.minValues;
|
|
753
|
-
this.maxValues = field.maxValues;
|
|
754
|
-
this.placeholder = field.placeholder;
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
return new DynamicModalRoleSelect();
|
|
758
|
-
}
|
|
759
|
-
if (field.type === "user-select") {
|
|
760
|
-
class DynamicModalUserSelect extends UserSelectMenu {
|
|
761
|
-
constructor(..._args4) {
|
|
762
|
-
super(..._args4);
|
|
763
|
-
this.customId = field.id;
|
|
764
|
-
this.required = field.required;
|
|
765
|
-
this.minValues = field.minValues;
|
|
766
|
-
this.maxValues = field.maxValues;
|
|
767
|
-
this.placeholder = field.placeholder;
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
return new DynamicModalUserSelect();
|
|
715
|
+
if (field.type === "select" || field.type === "role-select" || field.type === "user-select") {
|
|
716
|
+
const select = createDiscordSelectMenu(field.type === "select" ? "string" : field.type === "role-select" ? "role" : "user", field.id, field.options);
|
|
717
|
+
select.required = field.required;
|
|
718
|
+
select.minValues = field.minValues;
|
|
719
|
+
select.maxValues = field.maxValues;
|
|
720
|
+
select.placeholder = field.placeholder;
|
|
721
|
+
return select;
|
|
771
722
|
}
|
|
772
723
|
if (field.type === "checkbox") {
|
|
773
724
|
const options = field.options ?? [];
|
|
774
725
|
class DynamicCheckboxGroup extends CheckboxGroup {
|
|
775
|
-
constructor(...
|
|
776
|
-
super(...
|
|
726
|
+
constructor(..._args2) {
|
|
727
|
+
super(..._args2);
|
|
777
728
|
this.customId = field.id;
|
|
778
729
|
this.options = options;
|
|
779
730
|
this.required = field.required;
|
|
@@ -785,8 +736,8 @@ function createModalFieldComponent(field) {
|
|
|
785
736
|
}
|
|
786
737
|
const options = field.options ?? [];
|
|
787
738
|
class DynamicRadioGroup extends RadioGroup {
|
|
788
|
-
constructor(...
|
|
789
|
-
super(...
|
|
739
|
+
constructor(..._args3) {
|
|
740
|
+
super(..._args3);
|
|
790
741
|
this.customId = field.id;
|
|
791
742
|
this.options = options;
|
|
792
743
|
this.required = field.required;
|
|
@@ -803,8 +754,8 @@ var DiscordFormModal = class extends ModalBase {
|
|
|
803
754
|
this.components = params.fields.map((field) => {
|
|
804
755
|
const component = createModalFieldComponent(field);
|
|
805
756
|
class DynamicLabel extends Label {
|
|
806
|
-
constructor(...
|
|
807
|
-
super(...
|
|
757
|
+
constructor(..._args4) {
|
|
758
|
+
super(..._args4);
|
|
808
759
|
this.label = field.label;
|
|
809
760
|
this.description = field.description;
|
|
810
761
|
this.component = component;
|
|
@@ -919,7 +870,7 @@ function resolveDiscordSelectCallbackDataKind(options) {
|
|
|
919
870
|
if (renderableOptions.some((option) => option.action)) return "mixed";
|
|
920
871
|
}
|
|
921
872
|
const DISCORD_INTERACTIVE_BUTTON_ROW_SIZE = 5;
|
|
922
|
-
function buildDiscordButtonComponent(button,
|
|
873
|
+
function buildDiscordButtonComponent(button, options) {
|
|
923
874
|
const action = resolveMessagePresentationButtonAction(button);
|
|
924
875
|
if (!action) return;
|
|
925
876
|
if (action.type === "approval") {
|
|
@@ -933,6 +884,13 @@ function buildDiscordButtonComponent(button, optionIndex) {
|
|
|
933
884
|
};
|
|
934
885
|
}
|
|
935
886
|
if (action.type === "question") {
|
|
887
|
+
if ("intent" in action) return;
|
|
888
|
+
const optionIndex = resolveAskUserQuestionOptionIndex({
|
|
889
|
+
questionOptionIndices: options.questionOptionIndices,
|
|
890
|
+
questionId: action.questionId,
|
|
891
|
+
optionValue: action.optionValue
|
|
892
|
+
});
|
|
893
|
+
if (optionIndex === void 0) return;
|
|
936
894
|
const internalCustomId = buildDiscordQuestionCustomId({
|
|
937
895
|
questionId: action.questionId,
|
|
938
896
|
optionIndex
|
|
@@ -965,8 +923,11 @@ function buildDiscordButtonComponent(button, optionIndex) {
|
|
|
965
923
|
if (button.reusable === true) component.reusable = true;
|
|
966
924
|
return component;
|
|
967
925
|
}
|
|
968
|
-
function appendDiscordButtonBlocks(blocks, buttons) {
|
|
969
|
-
const components = buttons.
|
|
926
|
+
function appendDiscordButtonBlocks(blocks, buttons, options) {
|
|
927
|
+
const components = buttons.flatMap((button) => {
|
|
928
|
+
const component = buildDiscordButtonComponent(button, options);
|
|
929
|
+
return component ? [component] : [];
|
|
930
|
+
});
|
|
970
931
|
for (let index = 0; index < components.length; index += DISCORD_INTERACTIVE_BUTTON_ROW_SIZE) blocks.push({
|
|
971
932
|
type: "actions",
|
|
972
933
|
buttons: components.slice(index, index + DISCORD_INTERACTIVE_BUTTON_ROW_SIZE)
|
|
@@ -993,10 +954,10 @@ function appendDiscordSelectBlock(blocks, block) {
|
|
|
993
954
|
/**
|
|
994
955
|
* @deprecated Use buildDiscordPresentationComponents with MessagePresentation.
|
|
995
956
|
*/
|
|
996
|
-
function buildDiscordInteractiveComponents(interactive) {
|
|
997
|
-
return buildDiscordPresentationComponents(interactive ? legacyInteractiveReplyToPresentation(interactive) : void 0);
|
|
957
|
+
function buildDiscordInteractiveComponents(interactive, options = {}) {
|
|
958
|
+
return buildDiscordPresentationComponents(interactive ? legacyInteractiveReplyToPresentation(interactive) : void 0, options);
|
|
998
959
|
}
|
|
999
|
-
function buildDiscordPresentationComponents(presentation) {
|
|
960
|
+
function buildDiscordPresentationComponents(presentation, options = {}) {
|
|
1000
961
|
if (!presentation) return;
|
|
1001
962
|
const blocks = [];
|
|
1002
963
|
if (presentation.title) blocks.push({
|
|
@@ -1017,7 +978,7 @@ function buildDiscordPresentationComponents(presentation) {
|
|
|
1017
978
|
continue;
|
|
1018
979
|
}
|
|
1019
980
|
if (block.type === "buttons") {
|
|
1020
|
-
appendDiscordButtonBlocks(blocks, block.buttons);
|
|
981
|
+
appendDiscordButtonBlocks(blocks, block.buttons, options);
|
|
1021
982
|
continue;
|
|
1022
983
|
}
|
|
1023
984
|
if (block.type === "select") appendDiscordSelectBlock(blocks, block);
|
|
@@ -1037,6 +998,7 @@ var components_exports = /* @__PURE__ */ __exportAll({
|
|
|
1037
998
|
buildDiscordComponentMessageFlags: () => buildDiscordComponentMessageFlags,
|
|
1038
999
|
buildDiscordInteractiveComponents: () => buildDiscordInteractiveComponents,
|
|
1039
1000
|
buildDiscordModalCustomId: () => buildDiscordModalCustomId,
|
|
1001
|
+
coerceDiscordComponentParam: () => coerceDiscordComponentParam,
|
|
1040
1002
|
createDiscordFormModal: () => createDiscordFormModal,
|
|
1041
1003
|
formatDiscordComponentEventText: () => formatDiscordComponentEventText,
|
|
1042
1004
|
parseDiscordComponentCustomId: () => parseDiscordComponentCustomId,
|
|
@@ -1053,4 +1015,4 @@ function formatDiscordComponentEventText(params) {
|
|
|
1053
1015
|
return `Selected ${values.join(", ")} from "${params.label}".`;
|
|
1054
1016
|
}
|
|
1055
1017
|
//#endregion
|
|
1056
|
-
export {
|
|
1018
|
+
export { parseDiscordActivityCustomIdForInteraction as C, parseDiscordModalCustomIdForInteraction as D, parseDiscordModalCustomId as E, decodeCustomIdComponent as O, parseDiscordActivityCustomId as S, parseDiscordComponentCustomIdForInteraction as T, DISCORD_COMPONENT_CUSTOM_ID_KEY as _, shared_interactive_exports as a, buildDiscordComponentCustomId as b, parseExecApprovalData as c, buildDiscordComponentMessage as d, buildDiscordComponentMessageFlags as f, resolveDiscordComponentAttachmentName as g, readDiscordComponentSpec as h, buildDiscordPresentationComponents as i, encodeCustomIdComponent as k, DiscordFormModal as l, coerceDiscordComponentParam as m, formatDiscordComponentEventText as n, parseDiscordQuestionData as o, DISCORD_COMPONENT_ATTACHMENT_PREFIX as p, buildDiscordInteractiveComponents as r, buildExecApprovalCustomId as s, components_exports as t, createDiscordFormModal as u, DISCORD_MODAL_CUSTOM_ID_KEY as v, parseDiscordComponentCustomId as w, buildDiscordModalCustomId as x, buildDiscordActivityCustomId as y };
|