@openclaw/discord 2026.9.6 → 2026.9.8
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/assets/icon.png +0 -0
- package/dist/.setup/{account-inspect-BwQj24ht.mjs → account-inspect-De8hOUxG.mjs} +1 -1
- package/dist/.setup/{accounts-CwJQoLjM.mjs → accounts-ChaMcixG.mjs} +1 -4
- package/dist/.setup/{activities-api-COU4-0nR.mjs → activities-api-tvbsU2e3.mjs} +38 -66
- package/dist/.setup/{api-CBK9zcq5.mjs → api-DVbJwZVt.mjs} +10 -2
- package/dist/.setup/{approval-handler.runtime-CbBktBb4.mjs → approval-handler.runtime-DxCK2Rux.mjs} +49 -125
- package/dist/.setup/{approval-message-updates-jf9zMaIC.mjs → approval-message-updates-BKFqavHZ.mjs} +2 -2
- package/dist/.setup/{audit-vKbh-LFR.mjs → audit-CLg9I71N.mjs} +5 -5
- package/dist/.setup/{channel-Dv4e3Jpc.mjs → channel-DxlUVU9t.mjs} +121 -227
- package/dist/.setup/{channel-type-DKnjV1XW.mjs → channel-type-DRCrEMss.mjs} +22 -22
- package/dist/.setup/{channel.setup-0NX6FFwi.mjs → channel.setup-CRo1GjV7.mjs} +6 -9
- package/dist/.setup/{components-yBEb75bB.mjs → components-Cq1PvIpN.mjs} +41 -69
- package/dist/.setup/{config-schema-CiZz-mtA.mjs → config-schema-oxELUSDx.mjs} +19 -44
- package/dist/.setup/{conversation-binding-route-B7qImK_b.mjs → conversation-binding-route-Caz_XuFH.mjs} +10 -5
- package/dist/.setup/{directory-config-BytTftz-.mjs → directory-config-esqNn0Eo.mjs} +6 -9
- package/dist/.setup/{directory-live--EGTH0DC.mjs → directory-live-DtKRHuGV.mjs} +6 -12
- package/dist/.setup/{discord-BXpHW-cu.mjs → discord-0xJYfdDD.mjs} +82 -386
- package/dist/.setup/{doctor-D1R-uFIu.mjs → doctor-BCl1H5tl.mjs} +21 -36
- package/dist/.setup/{doctor-contract-Co5vRCZ6.mjs → doctor-contract-CvvgwrrG.mjs} +41 -50
- package/dist/.setup/{channel-actions.runtime-leZuw01r.mjs → handle-action-CUvQWnE7.mjs} +67 -104
- package/dist/.setup/{handle-action.guild-admin-DcFa8NwA.mjs → handle-action.guild-admin-Df-8gVle.mjs} +62 -120
- package/dist/.setup/{live-policy-config-eKQ-PLdy.mjs → live-policy-config-8Pv20CHc.mjs} +2 -3
- package/dist/.setup/{message-handler-X6ejmbtY.mjs → message-handler-B-Jk4oDk.mjs} +18 -94
- package/dist/.setup/{message-handler.preflight-pluralkit-8Xji34AF.mjs → message-handler.preflight-pluralkit-CWLUBVcx.mjs} +8 -10
- package/dist/.setup/{message-handler.preflight-DE_POxFc.mjs → message-handler.preflight-v-__NSDq.mjs} +69 -180
- package/dist/.setup/{message-handler.process-CCmIVnxy.mjs → message-handler.process-BNFFuChn.mjs} +65 -86
- package/dist/.setup/{outbound-adapter-ClIgmu4F.mjs → outbound-adapter-BobT-kse.mjs} +105 -19
- package/dist/.setup/{outbound-session-route-VulUE0yV.mjs → outbound-session-route-zVGxxceg.mjs} +140 -108
- package/dist/.setup/{pluralkit-CdAt1G0P.mjs → pluralkit-a6_NLfH9.mjs} +1 -1
- package/dist/.setup/{presence-cache-dYSHPWMx.mjs → presence-cache-Di3H3DIU.mjs} +0 -4
- package/dist/.setup/{probe-CupW4we4.mjs → probe-LYrIHlBF.mjs} +13 -4
- package/dist/.setup/{provider-iOf73HW-.mjs → provider-B_G5hASF.mjs} +721 -1416
- package/dist/.setup/provider-session.runtime-BYlTBFD2.mjs +6 -0
- package/dist/.setup/provider.runtime-CUE3UxER.mjs +2 -0
- package/dist/.setup/{realtime-session.runtime-Dz8uVutq.mjs → realtime-session.runtime-oUd9DOcz.mjs} +41 -55
- package/dist/.setup/{receive-recovery-DHst8WRx.mjs → receive-recovery-CHPOsnLc.mjs} +1 -4
- package/dist/.setup/{resolve-allowlist-common-CwMBzbx9.mjs → resolve-allowlist-common-DPdRggu5.mjs} +4 -7
- package/dist/.setup/{resolve-channels-BbvsLQOZ.mjs → resolve-channels-BFPNRmVv.mjs} +21 -40
- package/dist/.setup/{resolve-users-ByFlR7LQ.mjs → resolve-users-0-aBuCy3.mjs} +4 -4
- package/dist/.setup/{retry-BEYkDy0P.mjs → retry-pz_cSha2.mjs} +3 -3
- package/dist/.setup/rolldown-runtime-B4FMCO8f.mjs +28 -0
- package/dist/.setup/{runtime-B8lJfyrA.mjs → runtime-FN000lxA.mjs} +60 -162
- package/dist/.setup/runtime-doctor-migrations-CshUGl36.mjs +159 -0
- package/dist/.setup/{runtime-DisDbixd.mjs → runtime-sUksZ--Q.mjs} +2 -5
- package/dist/.setup/{secret-config-contract-DFu9hfU8.mjs → secret-config-contract-uOE2J7yM.mjs} +15 -85
- package/dist/.setup/{security-audit-s5w50-Ly.mjs → security-audit-Cdaegq7C.mjs} +3 -1
- package/dist/.setup/{send-CIBzvXjS.mjs → send-CrfEI6Bs.mjs} +53 -108
- package/dist/.setup/{send.components-ChY21qr-.mjs → send.components-DxQAMfES.mjs} +62 -107
- package/dist/.setup/{send.outbound-QTyuFupn.mjs → send.outbound-BISKnb-a.mjs} +66 -140
- package/dist/.setup/{send.shared-VNvWfX2T.mjs → send.shared-DGFkbkQR.mjs} +10 -25
- package/dist/.setup/{sender-identity-0Ymgvmaj.mjs → sender-identity-B9X5Vb9R.mjs} +2 -3
- package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +3 -0
- package/dist/.setup/{shared-DHPDaMSx.mjs → shared-B3wZ4hN-.mjs} +25 -32
- package/dist/.setup/{subagent-hooks-CjW7r8Pe.mjs → subagent-hooks-nlUE9ow7.mjs} +5 -6
- package/dist/.setup/system-events-CdeZnvPV.mjs +33 -0
- package/dist/.setup/{target-resolver-BXpy6VT8.mjs → target-resolver-BuLapkhy.mjs} +9 -12
- package/dist/.setup/targets-0KUcEIYx.mjs +3 -0
- package/dist/.setup/{thread-bindings-CEh2dhqP.mjs → thread-bindings-D7TfgjR_.mjs} +33 -35
- package/dist/.setup/{thread-bindings.manager-ve-i6oqt.mjs → thread-bindings.manager-DN-NissX.mjs} +325 -233
- package/dist/.setup/thread-bindings.session-updates-CshfKghV.mjs +359 -0
- package/dist/.setup/{thread-bindings.state-BThFQEga.mjs → thread-bindings.state-g6v9zAym.mjs} +21 -62
- package/dist/.setup/{transcripts-source-DVegW0WI.mjs → transcripts-source-p8EV179h.mjs} +76 -235
- package/dist/.setup/{typing-BKZL5fGj.mjs → typing-BiHCzBRu.mjs} +2 -1
- package/dist/.setup/{voice-runtime-elTtjEIG.mjs → voice-runtime-B46rcwrG.mjs} +140 -244
- package/dist/account-inspect-api.js +1 -1
- package/dist/action-runtime-api.js +1 -1
- package/dist/activities-api.js +1 -1
- package/dist/api.js +18 -18
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +4 -4
- package/dist/index.js +1 -1
- package/dist/runtime-api.js +20 -20
- package/dist/secret-contract-api.js +1 -1
- package/dist/security-audit-contract-api.js +1 -1
- package/dist/setup-entry.js +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/src/voice/audio-worker.runtime.js +15 -24
- package/dist/subagent-hooks-api.js +3 -4
- package/dist/transcripts-source-api.js +1 -1
- package/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@types/node/package.json +2 -17
- package/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/typebox/build/compile/code.mjs +1 -2
- package/node_modules/typebox/build/compile/validator.mjs +5 -1
- package/node_modules/typebox/build/format/iri.mjs +16 -9
- package/node_modules/typebox/build/guard/emit.mjs +2 -2
- package/node_modules/typebox/build/guard/guard.d.mts +7 -5
- package/node_modules/typebox/build/guard/guard.mjs +14 -9
- package/node_modules/typebox/build/guard/index.mjs +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
- package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
- package/node_modules/typebox/build/schema/build.mjs +2 -3
- package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
- package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
- package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
- package/node_modules/typebox/build/schema/parse.mjs +3 -0
- package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
- package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
- package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
- package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
- package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
- package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
- package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
- package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
- package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
- package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +3 -1
- package/openclaw.plugin.json +21 -1
- package/package.json +5 -5
- package/dist/.setup/agent-components.runtime-CEPrf2SY.mjs +0 -4
- package/dist/.setup/probe.runtime-DBQ_AGPe.mjs +0 -2
- package/dist/.setup/provider-session.runtime-DrGAYnZv.mjs +0 -6
- package/dist/.setup/provider.runtime-BmjW_pIw.mjs +0 -2
- package/dist/.setup/security-audit.runtime-DHtYenx9.mjs +0 -2
- package/dist/.setup/setup-plugin-api-Dvr41dyx.mjs +0 -3
- package/dist/.setup/system-events-B2YEEMbS.mjs +0 -34
- package/dist/.setup/targets-CvemhN3i.mjs +0 -3
- package/dist/.setup/thread-bindings.session-updates-DCQq1WZ5.mjs +0 -55
- /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
|
|
2
|
+
import { _ as DiscordError, ft as editChannel, ht as getChannelMessage, lt as createThread, t as discord_exports } from "./discord-0xJYfdDD.mjs";
|
|
3
|
+
import { D as getDiscordEndpointRuntime, f as resolveDiscordGuildEntry, i as normalizeDiscordAllowList, k as resolveDiscordEndpointMediaGuard, l as resolveDiscordChannelConfigWithFallback, n as allowListMatches, o as normalizeDiscordSlug, p as resolveDiscordMemberAccessState, r as isDiscordGroupAllowedByPolicy, t as isDiscordThreadChannelType } from "./channel-type-DRCrEMss.mjs";
|
|
4
|
+
import { a as listEnabledDiscordAccounts, c as resolveDiscordAccount, l as resolveDiscordAccountAllowFrom } from "./accounts-ChaMcixG.mjs";
|
|
4
5
|
import { t as resolveDiscordCommandOwnerAllowFrom } from "./command-owners-D78sAoOz.mjs";
|
|
5
6
|
import { a as resolveDiscordChannelParentSafe, i as resolveDiscordChannelParentIdSafe, n as resolveDiscordChannelInfoSafe, r as resolveDiscordChannelNameSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-C12aDZ0p.mjs";
|
|
6
7
|
import { ComponentType, StickerFormatType } from "discord-api-types/v10";
|
|
7
8
|
import { asDateTimestampMs, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
|
|
8
9
|
import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
10
|
+
import { resolveGlobalSingleton } from "openclaw/plugin-sdk/global-singleton";
|
|
9
11
|
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
10
12
|
import { buildAgentSessionKey } from "openclaw/plugin-sdk/routing";
|
|
11
13
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId, summarizeStringEntries, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -27,11 +29,8 @@ const discordChannelInfoCacheState = { entries: /* @__PURE__ */ new Map() };
|
|
|
27
29
|
const DISCORD_CHANNEL_INFO_CACHE_TTL_MS = 3e5;
|
|
28
30
|
const DISCORD_CHANNEL_INFO_NEGATIVE_CACHE_TTL_MS = 3e4;
|
|
29
31
|
const DISCORD_CHANNEL_INFO_CACHE_MAX_ENTRIES = 1e3;
|
|
30
|
-
function resolveDiscordChannelInfoCacheExpiresAt(ttlMs, nowMs) {
|
|
31
|
-
return resolveExpiresAtMsFromDurationMs(ttlMs, { nowMs });
|
|
32
|
-
}
|
|
33
32
|
function cacheDiscordChannelInfo(channelId, value, ttlMs, nowMs) {
|
|
34
|
-
const expiresAt =
|
|
33
|
+
const expiresAt = resolveExpiresAtMsFromDurationMs(ttlMs, { nowMs });
|
|
35
34
|
if (expiresAt !== void 0) {
|
|
36
35
|
discordChannelInfoCacheState.entries.set(channelId, {
|
|
37
36
|
value,
|
|
@@ -264,10 +263,13 @@ const AUDIO_ATTACHMENT_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
|
264
263
|
".wav"
|
|
265
264
|
]);
|
|
266
265
|
const DISCORD_STICKER_ASSET_BASE_URL = "https://media.discordapp.net/stickers";
|
|
267
|
-
function createDiscordMediaOperation(
|
|
266
|
+
function createDiscordMediaOperation(maxBytes, options) {
|
|
268
267
|
return {
|
|
268
|
+
...options,
|
|
269
|
+
ssrfPolicy: resolveDiscordCdnPolicy(options?.ssrfPolicy),
|
|
269
270
|
endpointRuntime: getDiscordEndpointRuntime() ?? null,
|
|
270
|
-
|
|
271
|
+
maxBytes,
|
|
272
|
+
out: []
|
|
271
273
|
};
|
|
272
274
|
}
|
|
273
275
|
function isDiscordAudioAttachmentFileName(fileName) {
|
|
@@ -308,121 +310,46 @@ function resolveDiscordMediaClassification(params) {
|
|
|
308
310
|
...kind ? { kind } : {}
|
|
309
311
|
};
|
|
310
312
|
}
|
|
311
|
-
async function
|
|
312
|
-
const out = [];
|
|
313
|
-
const resolvedSsrFPolicy = resolveDiscordCdnPolicy(options?.ssrfPolicy);
|
|
314
|
-
const operation = createDiscordMediaOperation(options?.abortSignal);
|
|
313
|
+
async function resolveMessageMedia(message, operation, errorPrefix) {
|
|
315
314
|
await appendResolvedMediaFromAttachments({
|
|
315
|
+
...operation,
|
|
316
316
|
attachments: message.attachments ?? [],
|
|
317
|
-
|
|
318
|
-
out,
|
|
319
|
-
errorPrefix: "discord: failed to download attachment",
|
|
320
|
-
fetchImpl: options?.fetchImpl,
|
|
321
|
-
ssrfPolicy: resolvedSsrFPolicy,
|
|
322
|
-
readIdleTimeoutMs: options?.readIdleTimeoutMs,
|
|
323
|
-
totalTimeoutMs: options?.totalTimeoutMs,
|
|
324
|
-
...operation
|
|
317
|
+
errorPrefix: `${errorPrefix} attachment`
|
|
325
318
|
});
|
|
326
319
|
await appendResolvedMediaFromStickers({
|
|
320
|
+
...operation,
|
|
327
321
|
stickers: resolveDiscordMessageStickers(message),
|
|
328
|
-
|
|
329
|
-
out,
|
|
330
|
-
errorPrefix: "discord: failed to download sticker",
|
|
331
|
-
fetchImpl: options?.fetchImpl,
|
|
332
|
-
ssrfPolicy: resolvedSsrFPolicy,
|
|
333
|
-
readIdleTimeoutMs: options?.readIdleTimeoutMs,
|
|
334
|
-
totalTimeoutMs: options?.totalTimeoutMs,
|
|
335
|
-
...operation
|
|
322
|
+
errorPrefix: `${errorPrefix} sticker`
|
|
336
323
|
});
|
|
337
|
-
return out;
|
|
324
|
+
return operation.out;
|
|
325
|
+
}
|
|
326
|
+
async function resolveMediaList(message, maxBytes, options) {
|
|
327
|
+
return resolveMessageMedia(message, createDiscordMediaOperation(maxBytes, options), "discord: failed to download");
|
|
338
328
|
}
|
|
339
329
|
async function resolveForwardedMediaList(message, maxBytes, options) {
|
|
340
330
|
const snapshots = resolveDiscordMessageSnapshots(message);
|
|
341
|
-
const
|
|
342
|
-
const resolvedSsrFPolicy = resolveDiscordCdnPolicy(options?.ssrfPolicy);
|
|
343
|
-
const operation = createDiscordMediaOperation(options?.abortSignal);
|
|
331
|
+
const operation = createDiscordMediaOperation(maxBytes, options);
|
|
344
332
|
if (snapshots.length > 0) {
|
|
345
333
|
for (const snapshot of snapshots) {
|
|
346
334
|
await appendResolvedMediaFromAttachments({
|
|
335
|
+
...operation,
|
|
347
336
|
attachments: snapshot.message?.attachments,
|
|
348
|
-
|
|
349
|
-
out,
|
|
350
|
-
errorPrefix: "discord: failed to download forwarded attachment",
|
|
351
|
-
fetchImpl: options?.fetchImpl,
|
|
352
|
-
ssrfPolicy: resolvedSsrFPolicy,
|
|
353
|
-
readIdleTimeoutMs: options?.readIdleTimeoutMs,
|
|
354
|
-
totalTimeoutMs: options?.totalTimeoutMs,
|
|
355
|
-
...operation
|
|
337
|
+
errorPrefix: "discord: failed to download forwarded attachment"
|
|
356
338
|
});
|
|
357
339
|
await appendResolvedMediaFromStickers({
|
|
340
|
+
...operation,
|
|
358
341
|
stickers: snapshot.message ? resolveDiscordSnapshotStickers(snapshot.message) : [],
|
|
359
|
-
|
|
360
|
-
out,
|
|
361
|
-
errorPrefix: "discord: failed to download forwarded sticker",
|
|
362
|
-
fetchImpl: options?.fetchImpl,
|
|
363
|
-
ssrfPolicy: resolvedSsrFPolicy,
|
|
364
|
-
readIdleTimeoutMs: options?.readIdleTimeoutMs,
|
|
365
|
-
totalTimeoutMs: options?.totalTimeoutMs,
|
|
366
|
-
...operation
|
|
342
|
+
errorPrefix: "discord: failed to download forwarded sticker"
|
|
367
343
|
});
|
|
368
344
|
}
|
|
369
|
-
return out;
|
|
345
|
+
return operation.out;
|
|
370
346
|
}
|
|
371
347
|
const referencedForward = resolveDiscordReferencedForwardMessage(message);
|
|
372
|
-
|
|
373
|
-
await appendResolvedMediaFromAttachments({
|
|
374
|
-
attachments: referencedForward.attachments,
|
|
375
|
-
maxBytes,
|
|
376
|
-
out,
|
|
377
|
-
errorPrefix: "discord: failed to download forwarded attachment",
|
|
378
|
-
fetchImpl: options?.fetchImpl,
|
|
379
|
-
ssrfPolicy: resolvedSsrFPolicy,
|
|
380
|
-
readIdleTimeoutMs: options?.readIdleTimeoutMs,
|
|
381
|
-
totalTimeoutMs: options?.totalTimeoutMs,
|
|
382
|
-
...operation
|
|
383
|
-
});
|
|
384
|
-
await appendResolvedMediaFromStickers({
|
|
385
|
-
stickers: resolveDiscordMessageStickers(referencedForward),
|
|
386
|
-
maxBytes,
|
|
387
|
-
out,
|
|
388
|
-
errorPrefix: "discord: failed to download forwarded sticker",
|
|
389
|
-
fetchImpl: options?.fetchImpl,
|
|
390
|
-
ssrfPolicy: resolvedSsrFPolicy,
|
|
391
|
-
readIdleTimeoutMs: options?.readIdleTimeoutMs,
|
|
392
|
-
totalTimeoutMs: options?.totalTimeoutMs,
|
|
393
|
-
...operation
|
|
394
|
-
});
|
|
395
|
-
return out;
|
|
348
|
+
return referencedForward ? resolveMessageMedia(referencedForward, operation, "discord: failed to download forwarded") : operation.out;
|
|
396
349
|
}
|
|
397
350
|
async function resolveReferencedReplyMediaList(message, maxBytes, options) {
|
|
398
351
|
const referencedReply = resolveDiscordReferencedReplyMessage(message);
|
|
399
|
-
|
|
400
|
-
if (!referencedReply) return out;
|
|
401
|
-
const resolvedSsrFPolicy = resolveDiscordCdnPolicy(options?.ssrfPolicy);
|
|
402
|
-
const operation = createDiscordMediaOperation(options?.abortSignal);
|
|
403
|
-
await appendResolvedMediaFromAttachments({
|
|
404
|
-
attachments: referencedReply.attachments,
|
|
405
|
-
maxBytes,
|
|
406
|
-
out,
|
|
407
|
-
errorPrefix: "discord: failed to download referenced reply attachment",
|
|
408
|
-
fetchImpl: options?.fetchImpl,
|
|
409
|
-
ssrfPolicy: resolvedSsrFPolicy,
|
|
410
|
-
readIdleTimeoutMs: options?.readIdleTimeoutMs,
|
|
411
|
-
totalTimeoutMs: options?.totalTimeoutMs,
|
|
412
|
-
...operation
|
|
413
|
-
});
|
|
414
|
-
await appendResolvedMediaFromStickers({
|
|
415
|
-
stickers: resolveDiscordMessageStickers(referencedReply),
|
|
416
|
-
maxBytes,
|
|
417
|
-
out,
|
|
418
|
-
errorPrefix: "discord: failed to download referenced reply sticker",
|
|
419
|
-
fetchImpl: options?.fetchImpl,
|
|
420
|
-
ssrfPolicy: resolvedSsrFPolicy,
|
|
421
|
-
readIdleTimeoutMs: options?.readIdleTimeoutMs,
|
|
422
|
-
totalTimeoutMs: options?.totalTimeoutMs,
|
|
423
|
-
...operation
|
|
424
|
-
});
|
|
425
|
-
return out;
|
|
352
|
+
return referencedReply ? resolveMessageMedia(referencedReply, createDiscordMediaOperation(maxBytes, options), "discord: failed to download referenced reply") : [];
|
|
426
353
|
}
|
|
427
354
|
async function fetchDiscordMedia(params) {
|
|
428
355
|
const endpointGuard = resolveDiscordEndpointMediaGuard(params.url, params.endpointRuntime);
|
|
@@ -585,14 +512,9 @@ function isImageAttachment(attachment) {
|
|
|
585
512
|
if (!name) return false;
|
|
586
513
|
return /\.(avif|bmp|gif|heic|heif|jpe?g|png|tiff?|webp)$/.test(name);
|
|
587
514
|
}
|
|
588
|
-
function resolveDiscordTextMediaFacts(params) {
|
|
589
|
-
return [...(params.attachments ?? []).map((attachment) => {
|
|
590
|
-
return resolveDiscordMediaClassification({ attachment });
|
|
591
|
-
}), ...(params.stickers ?? []).map(() => ({ kind: "sticker" }))];
|
|
592
|
-
}
|
|
593
515
|
/** Renders native Discord media only for transcript surfaces that cannot carry facts. */
|
|
594
516
|
function formatDiscordMediaText(params) {
|
|
595
|
-
return formatMediaPlaceholderText(
|
|
517
|
+
return formatMediaPlaceholderText([...(params.attachments ?? []).map((attachment) => resolveDiscordMediaClassification({ attachment })), ...(params.stickers ?? []).map(() => ({ kind: "sticker" }))]);
|
|
596
518
|
}
|
|
597
519
|
//#endregion
|
|
598
520
|
//#region extensions/discord/src/monitor/message-text.ts
|
|
@@ -602,10 +524,7 @@ function resolveDiscordEmbedText(embeds) {
|
|
|
602
524
|
function resolveDiscordMessageText(message, options) {
|
|
603
525
|
const baseText = resolveDiscordMentions(resolveDiscordMessageMentionDocuments(message).map((text) => normalizeOptionalString(text)).filter(Boolean).join("\n") || normalizeOptionalString(options?.fallbackText) || "", message);
|
|
604
526
|
if (!options?.includeForwarded) return baseText;
|
|
605
|
-
|
|
606
|
-
if (!forwardedText) return baseText;
|
|
607
|
-
if (!baseText) return forwardedText;
|
|
608
|
-
return `${baseText}\n${forwardedText}`;
|
|
527
|
+
return [baseText, resolveDiscordForwardedMessagesText(message)].filter(Boolean).join("\n");
|
|
609
528
|
}
|
|
610
529
|
function resolveDiscordMessageMentionDocuments(message) {
|
|
611
530
|
const content = typeof message.content === "string" ? message.content : "";
|
|
@@ -671,10 +590,7 @@ function resolveDiscordForwardedMessagesText(message) {
|
|
|
671
590
|
if (snapshots.length > 0) return resolveDiscordForwardedMessagesTextFromSnapshots(snapshots);
|
|
672
591
|
const referencedForward = resolveDiscordReferencedForwardMessage(message);
|
|
673
592
|
if (!referencedForward) return "";
|
|
674
|
-
|
|
675
|
-
if (!referencedText) return "";
|
|
676
|
-
const authorLabel = formatDiscordSnapshotAuthor(referencedForward.author);
|
|
677
|
-
return `${authorLabel ? `[Forwarded message from ${authorLabel}]` : "[Forwarded message]"}\n${referencedText}`;
|
|
593
|
+
return formatDiscordForwardedMessageBlock(resolveDiscordMessageHistoryText(referencedForward), referencedForward.author);
|
|
678
594
|
}
|
|
679
595
|
function resolveDiscordMessageComponents(message) {
|
|
680
596
|
const components = message.components;
|
|
@@ -702,15 +618,11 @@ function collectDiscordTextDisplayDocuments(value, parts) {
|
|
|
702
618
|
collectDiscordTextDisplayDocuments(component.component, parts);
|
|
703
619
|
}
|
|
704
620
|
function resolveDiscordForwardedMessagesTextFromSnapshots(snapshots) {
|
|
705
|
-
|
|
706
|
-
if (forwardedBlocks.length === 0) return "";
|
|
707
|
-
return forwardedBlocks.join("\n\n");
|
|
621
|
+
return snapshots.map(({ message }) => message ? formatDiscordForwardedMessageBlock(resolveDiscordRawMessageText(message), message.author) : "").filter(Boolean).join("\n\n");
|
|
708
622
|
}
|
|
709
|
-
function
|
|
710
|
-
if (!
|
|
711
|
-
const
|
|
712
|
-
if (!text) return null;
|
|
713
|
-
const authorLabel = formatDiscordSnapshotAuthor(snapshotMessage.author);
|
|
623
|
+
function formatDiscordForwardedMessageBlock(text, author) {
|
|
624
|
+
if (!text) return "";
|
|
625
|
+
const authorLabel = formatDiscordSnapshotAuthor(author);
|
|
714
626
|
return `${authorLabel ? `[Forwarded message from ${authorLabel}]` : "[Forwarded message]"}\n${text}`;
|
|
715
627
|
}
|
|
716
628
|
/** Single owner for raw Discord message payloads (REST fetches and forwarded snapshots). */
|
|
@@ -720,7 +632,7 @@ function resolveDiscordRawMessageText(message) {
|
|
|
720
632
|
attachments: message.attachments ?? void 0,
|
|
721
633
|
stickers: resolveDiscordSnapshotStickers(message)
|
|
722
634
|
});
|
|
723
|
-
return [content || resolveDiscordEmbedText(message.embeds) || extractDiscordComponentsV2Text(message.components) || resolveDiscordForwardedMessagesTextFromSnapshots(message.message_snapshots), mediaText].filter(Boolean).join("\n");
|
|
635
|
+
return [content || resolveDiscordEmbedText(message.embeds) || extractDiscordComponentsV2Text(message.components) || resolveDiscordForwardedMessagesTextFromSnapshots(normalizeDiscordMessageSnapshots(message.message_snapshots)), mediaText].filter(Boolean).join("\n");
|
|
724
636
|
}
|
|
725
637
|
//#endregion
|
|
726
638
|
//#region extensions/discord/src/monitor/threading.cache.ts
|
|
@@ -750,9 +662,6 @@ function setCachedThreadStarter(key, value, now) {
|
|
|
750
662
|
}
|
|
751
663
|
//#endregion
|
|
752
664
|
//#region extensions/discord/src/monitor/threading.starter.ts
|
|
753
|
-
function isDiscordForumParentType(parentType) {
|
|
754
|
-
return parentType === discord_exports.ChannelType.GuildForum || parentType === discord_exports.ChannelType.GuildMedia;
|
|
755
|
-
}
|
|
756
665
|
const IN_FLIGHT_DISCORD_THREAD_STARTERS = /* @__PURE__ */ new Map();
|
|
757
666
|
function resolveDiscordThreadChannel(params) {
|
|
758
667
|
if (!params.isGuildMessage) return null;
|
|
@@ -787,7 +696,7 @@ async function resolveDiscordThreadParentInfo(params) {
|
|
|
787
696
|
};
|
|
788
697
|
}
|
|
789
698
|
async function resolveDiscordThreadStarter(params) {
|
|
790
|
-
const messageChannelId =
|
|
699
|
+
const messageChannelId = params.parentType === discord_exports.ChannelType.GuildForum || params.parentType === discord_exports.ChannelType.GuildMedia ? params.channel.id : params.parentId;
|
|
791
700
|
if (!messageChannelId) return null;
|
|
792
701
|
const cacheKey = `${params.accountId}:${params.channel.id}:${messageChannelId}`;
|
|
793
702
|
const cached = getCachedThreadStarter(cacheKey, Date.now());
|
|
@@ -807,11 +716,7 @@ async function resolveDiscordThreadStarterUncached(params, cacheKey, messageChan
|
|
|
807
716
|
setCachedThreadStarter(cacheKey, { kind: "miss" }, Date.now());
|
|
808
717
|
};
|
|
809
718
|
try {
|
|
810
|
-
const starter = await
|
|
811
|
-
client: params.client,
|
|
812
|
-
messageChannelId,
|
|
813
|
-
threadId: params.channel.id
|
|
814
|
-
});
|
|
719
|
+
const starter = await getChannelMessage(params.client.rest, messageChannelId, params.channel.id);
|
|
815
720
|
if (!starter) {
|
|
816
721
|
cacheMiss();
|
|
817
722
|
return null;
|
|
@@ -830,80 +735,53 @@ async function resolveDiscordThreadStarterUncached(params, cacheKey, messageChan
|
|
|
830
735
|
}, Date.now());
|
|
831
736
|
return payload;
|
|
832
737
|
} catch (error) {
|
|
833
|
-
if (
|
|
738
|
+
if (error instanceof DiscordError && (error.status === 403 || error.status === 404)) cacheMiss();
|
|
834
739
|
return null;
|
|
835
740
|
}
|
|
836
741
|
}
|
|
837
|
-
function isDiscordThreadStarterNegativeCacheError(error) {
|
|
838
|
-
return error instanceof DiscordError && (error.status === 403 || error.status === 404);
|
|
839
|
-
}
|
|
840
|
-
function resolveDiscordThreadStarterMessageChannelId(params) {
|
|
841
|
-
return isDiscordForumParentType(params.parentType) ? params.channel.id : params.parentId;
|
|
842
|
-
}
|
|
843
|
-
async function fetchDiscordThreadStarterMessage(params) {
|
|
844
|
-
const starter = await getChannelMessage(params.client.rest, params.messageChannelId, params.threadId);
|
|
845
|
-
return starter ? starter : null;
|
|
846
|
-
}
|
|
847
742
|
function buildDiscordThreadStarterPayload(params) {
|
|
848
743
|
const text = resolveDiscordRawMessageText(params.starter);
|
|
849
744
|
if (!text) return null;
|
|
745
|
+
const starter = params.starter;
|
|
746
|
+
const authorTag = resolveDiscordThreadStarterAuthorTag(starter.author);
|
|
850
747
|
return {
|
|
851
748
|
text,
|
|
852
|
-
|
|
853
|
-
timestamp: params.resolveTimestampMs(params.starter.timestamp) ?? void 0
|
|
854
|
-
};
|
|
855
|
-
}
|
|
856
|
-
function resolveDiscordThreadStarterIdentity(starter) {
|
|
857
|
-
return {
|
|
858
|
-
author: resolveDiscordThreadStarterAuthor(starter),
|
|
749
|
+
author: starter.member?.nick ?? starter.member?.displayName ?? authorTag ?? starter.author?.username ?? starter.author?.id ?? "Unknown",
|
|
859
750
|
authorId: starter.author?.id ?? void 0,
|
|
860
751
|
authorName: starter.author?.username ?? void 0,
|
|
861
|
-
authorTag
|
|
862
|
-
memberRoleIds:
|
|
752
|
+
authorTag,
|
|
753
|
+
memberRoleIds: Array.isArray(starter.member?.roles) ? starter.member.roles : void 0,
|
|
754
|
+
timestamp: params.resolveTimestampMs(starter.timestamp) ?? void 0
|
|
863
755
|
};
|
|
864
756
|
}
|
|
865
|
-
function resolveDiscordThreadStarterAuthor(starter) {
|
|
866
|
-
return starter.member?.nick ?? starter.member?.displayName ?? resolveDiscordThreadStarterAuthorTag(starter.author) ?? starter.author?.username ?? starter.author?.id ?? "Unknown";
|
|
867
|
-
}
|
|
868
757
|
function resolveDiscordThreadStarterAuthorTag(author) {
|
|
869
758
|
if (!author?.username || !author.discriminator) return;
|
|
870
759
|
if (author.discriminator !== "0") return `${author.username}#${author.discriminator}`;
|
|
871
760
|
return author.username;
|
|
872
761
|
}
|
|
873
|
-
function resolveDiscordThreadStarterRoleIds(member) {
|
|
874
|
-
return Array.isArray(member?.roles) ? member.roles : void 0;
|
|
875
|
-
}
|
|
876
762
|
function resolveDiscordReplyTarget(opts) {
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
763
|
+
return createReplyReferencePlanner({
|
|
764
|
+
replyToMode: opts.replyToMode,
|
|
765
|
+
startId: opts.replyToId,
|
|
766
|
+
hasReplied: opts.hasReplied
|
|
767
|
+
}).peek();
|
|
882
768
|
}
|
|
883
769
|
function sanitizeDiscordThreadName(rawName, fallbackId) {
|
|
884
770
|
const baseSource = rawName.replace(/<@!?\d+>/g, "").replace(/<@&\d+>/g, "").replace(/<#\d+>/g, "").replace(/\s+/g, " ").trim() || `Thread ${fallbackId}`;
|
|
885
|
-
|
|
886
|
-
return truncateUtf16Safe(base, 100) || `Thread ${fallbackId}`;
|
|
771
|
+
return truncateUtf16Safe(baseSource, 80) || `Thread ${fallbackId}`;
|
|
887
772
|
}
|
|
888
773
|
function resolveDiscordReplyDeliveryPlan(params) {
|
|
889
|
-
const
|
|
890
|
-
|
|
891
|
-
let replyTarget = originalReplyTarget;
|
|
892
|
-
if (params.createdThreadId) {
|
|
893
|
-
deliverTarget = `channel:${params.createdThreadId}`;
|
|
894
|
-
replyTarget = deliverTarget;
|
|
895
|
-
}
|
|
896
|
-
const allowReference = deliverTarget === originalReplyTarget;
|
|
897
|
-
const replyReference = createReplyReferencePlanner({
|
|
898
|
-
replyToMode: allowReference ? params.replyToMode : "off",
|
|
899
|
-
existingId: params.threadChannel ? params.messageId : void 0,
|
|
900
|
-
startId: params.messageId,
|
|
901
|
-
allowReference
|
|
902
|
-
});
|
|
774
|
+
const deliverTarget = params.createdThreadId ? `channel:${params.createdThreadId}` : params.replyTarget;
|
|
775
|
+
const allowReference = deliverTarget === params.replyTarget;
|
|
903
776
|
return {
|
|
904
777
|
deliverTarget,
|
|
905
|
-
replyTarget,
|
|
906
|
-
replyReference
|
|
778
|
+
replyTarget: deliverTarget,
|
|
779
|
+
replyReference: createReplyReferencePlanner({
|
|
780
|
+
replyToMode: allowReference ? params.replyToMode : "off",
|
|
781
|
+
existingId: params.threadChannel ? params.messageId : void 0,
|
|
782
|
+
startId: params.messageId,
|
|
783
|
+
allowReference
|
|
784
|
+
})
|
|
907
785
|
};
|
|
908
786
|
}
|
|
909
787
|
//#endregion
|
|
@@ -939,20 +817,8 @@ async function resolveDiscordAutoThreadReplyPlan(params) {
|
|
|
939
817
|
const messageChannelId = resolveTrimmedDiscordMessageChannelId(params);
|
|
940
818
|
const originalReplyTarget = `channel:${params.threadChannel?.id ?? (messageChannelId || "unknown")}`;
|
|
941
819
|
const createdThreadId = await maybeCreateDiscordAutoThread({
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
messageChannelId: messageChannelId || void 0,
|
|
945
|
-
channel: params.channel,
|
|
946
|
-
isGuildMessage: params.isGuildMessage,
|
|
947
|
-
channelConfig: params.channelConfig,
|
|
948
|
-
threadChannel: params.threadChannel,
|
|
949
|
-
channelType: params.channelType,
|
|
950
|
-
channelName: params.channelName,
|
|
951
|
-
channelDescription: params.channelDescription,
|
|
952
|
-
baseText: params.baseText,
|
|
953
|
-
combinedBody: params.combinedBody,
|
|
954
|
-
cfg: params.cfg,
|
|
955
|
-
agentId: params.agentId
|
|
820
|
+
...params,
|
|
821
|
+
messageChannelId: messageChannelId || void 0
|
|
956
822
|
});
|
|
957
823
|
const deliveryPlan = resolveDiscordReplyDeliveryPlan({
|
|
958
824
|
replyTarget: originalReplyTarget,
|
|
@@ -982,7 +848,7 @@ async function maybeCreateDiscordAutoThread(params) {
|
|
|
982
848
|
if (params.channelType === discord_exports.ChannelType.GuildForum || params.channelType === discord_exports.ChannelType.GuildMedia || params.channelType === discord_exports.ChannelType.GuildVoice || params.channelType === discord_exports.ChannelType.GuildStageVoice) return;
|
|
983
849
|
const messageChannelId = resolveTrimmedDiscordMessageChannelId(params);
|
|
984
850
|
if (!messageChannelId) return;
|
|
985
|
-
|
|
851
|
+
const findExistingThread = async () => {
|
|
986
852
|
try {
|
|
987
853
|
const existingThreadId = (await getChannelMessage(params.client.rest, messageChannelId, params.message.id))?.thread?.id;
|
|
988
854
|
if (existingThreadId) {
|
|
@@ -990,6 +856,10 @@ async function maybeCreateDiscordAutoThread(params) {
|
|
|
990
856
|
return existingThreadId;
|
|
991
857
|
}
|
|
992
858
|
} catch {}
|
|
859
|
+
};
|
|
860
|
+
try {
|
|
861
|
+
const existingThreadId = await findExistingThread();
|
|
862
|
+
if (existingThreadId) return existingThreadId;
|
|
993
863
|
if (params.message.author?.bot) {
|
|
994
864
|
logVerbose(`discord: autoThread skipped for bot-authored message ${messageChannelId}/${params.message.id}`);
|
|
995
865
|
return;
|
|
@@ -1026,14 +896,7 @@ async function maybeCreateDiscordAutoThread(params) {
|
|
|
1026
896
|
return createdId || void 0;
|
|
1027
897
|
} catch (err) {
|
|
1028
898
|
logVerbose(`discord: autoThread creation failed for ${messageChannelId}/${params.message.id}: ${String(err)}`);
|
|
1029
|
-
|
|
1030
|
-
const existingThreadId = (await getChannelMessage(params.client.rest, messageChannelId, params.message.id))?.thread?.id || "";
|
|
1031
|
-
if (existingThreadId) {
|
|
1032
|
-
logVerbose(`discord: autoThread reusing existing thread ${existingThreadId} on ${messageChannelId}/${params.message.id}`);
|
|
1033
|
-
return existingThreadId;
|
|
1034
|
-
}
|
|
1035
|
-
} catch {}
|
|
1036
|
-
return;
|
|
899
|
+
return findExistingThread();
|
|
1037
900
|
}
|
|
1038
901
|
}
|
|
1039
902
|
function resolveDiscordThreadTitleModelRef(params) {
|
|
@@ -1282,37 +1145,15 @@ function resolveDiscordVoiceEnabled(voice) {
|
|
|
1282
1145
|
if (voice?.enabled !== void 0) return voice.enabled;
|
|
1283
1146
|
return voice !== void 0;
|
|
1284
1147
|
}
|
|
1285
|
-
function buildProviderConfigs(realtimeConfig) {
|
|
1286
|
-
const configs = realtimeConfig?.providers;
|
|
1287
|
-
return configs && Object.keys(configs).length > 0 ? { ...configs } : void 0;
|
|
1288
|
-
}
|
|
1289
|
-
function buildProviderConfigOverrides(realtimeConfig) {
|
|
1290
|
-
const overrides = {
|
|
1291
|
-
...realtimeConfig?.model ? { model: realtimeConfig.model } : {},
|
|
1292
|
-
...realtimeConfig?.speakerVoice ? { voice: realtimeConfig.speakerVoice } : realtimeConfig?.speakerVoiceId ? { voice: realtimeConfig.speakerVoiceId } : {},
|
|
1293
|
-
...typeof realtimeConfig?.minBargeInAudioEndMs === "number" ? { minBargeInAudioEndMs: realtimeConfig.minBargeInAudioEndMs } : {}
|
|
1294
|
-
};
|
|
1295
|
-
return Object.keys(overrides).length > 0 ? overrides : void 0;
|
|
1296
|
-
}
|
|
1297
1148
|
//#endregion
|
|
1298
1149
|
//#region extensions/discord/src/voice/transcripts-source.ts
|
|
1299
|
-
const
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
captures: /* @__PURE__ */ new Map(),
|
|
1307
|
-
managerWaiters: /* @__PURE__ */ new Set(),
|
|
1308
|
-
captureEpochReaders: /* @__PURE__ */ new Map(),
|
|
1309
|
-
nextRecordingEpoch: 0n
|
|
1310
|
-
};
|
|
1311
|
-
globalStore[DISCORD_TRANSCRIPTS_STATE_KEY] = discordTranscriptsState;
|
|
1312
|
-
}
|
|
1313
|
-
return discordTranscriptsState;
|
|
1314
|
-
}
|
|
1315
|
-
const TRANSCRIPTS_STATE = resolveDiscordTranscriptsGlobalState();
|
|
1150
|
+
const TRANSCRIPTS_STATE = resolveGlobalSingleton(Symbol.for("openclaw.discordTranscriptsState"), () => ({
|
|
1151
|
+
managersByAccountId: /* @__PURE__ */ new Map(),
|
|
1152
|
+
captures: /* @__PURE__ */ new Map(),
|
|
1153
|
+
managerWaiters: /* @__PURE__ */ new Set(),
|
|
1154
|
+
captureEpochReaders: /* @__PURE__ */ new Map(),
|
|
1155
|
+
nextRecordingEpoch: 0n
|
|
1156
|
+
}));
|
|
1316
1157
|
const managersByAccountId = TRANSCRIPTS_STATE.managersByAccountId;
|
|
1317
1158
|
const captures = TRANSCRIPTS_STATE.captures;
|
|
1318
1159
|
const managerWaiters = TRANSCRIPTS_STATE.managerWaiters;
|
|
@@ -1777,4 +1618,4 @@ const discordVoiceTranscriptsSourceProvider = {
|
|
|
1777
1618
|
}
|
|
1778
1619
|
};
|
|
1779
1620
|
//#endregion
|
|
1780
|
-
export {
|
|
1621
|
+
export { resolveDiscordMessageChannelId as A, resolveReferencedReplyMediaList as C, resolveDiscordReferencedReplyMessage as D, resolveDiscordMessageStickers as E, resolveDiscordReferencedReplyMessageId as O, resolveMediaList as S, hasDiscordMessageStickers as T, resolveDiscordMessageHistoryText as _, resolveDiscordVoiceEnabled as a, formatDiscordMediaText as b, resolveDiscordVoiceAccessTarget as c, threading_exports as d, resolveDiscordAutoThreadReplyPlan as f, resolveDiscordMessageBatch as g, sanitizeDiscordThreadName as h, setDiscordTranscriptsVoiceManager as i, resolveDiscordChannelInfo as k, resolveDiscordThreadLikeChannelContext as l, resolveDiscordThreadStarter as m, discordVoiceTranscriptsSourceProvider as n, authorizeDiscordVoiceIngress as o, resolveDiscordReplyTarget as p, resolveDiscordTranscriptsCapture as r, resolveDiscordVoiceAccess as s, bindDiscordCaptureReceipts as t, resolveFetchedDiscordThreadLikeChannelContext as u, resolveDiscordMessageMentionDocuments as v, resolveDiscordCdnPolicy as w, resolveForwardedMediaList as x, resolveDiscordMessageText as y };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
|
|
2
|
+
import { St as sendChannelTyping } from "./discord-0xJYfdDD.mjs";
|
|
2
3
|
import { c as raceWithTimeout } from "./timeouts-D86uWLt_.mjs";
|
|
3
4
|
//#region extensions/discord/src/monitor/typing.ts
|
|
4
5
|
var typing_exports = /* @__PURE__ */ __exportAll({ sendTyping: () => sendTyping });
|