






























@@ -44,6 +44,7 @@ import {
4444type DiscordSendEmbeds,
4545} from "../send.shared.js";
4646import { resolveDiscordChannelId } from "../targets.js";
47+import { createDiscordActionOptions } from "./runtime.shared.js";
47484849export const discordMessagingActionRuntime = {
4950 createThreadDiscord,
@@ -135,6 +136,8 @@ export async function handleDiscordMessagingAction(
135136throw new Error("Discord messaging actions require a resolved runtime config.");
136137}
137138const cfgOptions = { cfg };
139+const withOpts = (extra?: Record<string, unknown>) =>
140+createDiscordActionOptions({ cfg, accountId, extra });
138141const resolvedReactionAccountId = accountId ?? resolveDefaultDiscordAccountId(cfg);
139142const resolveReactionChannelId = async () => {
140143const target =
@@ -227,11 +230,7 @@ export async function handleDiscordMessagingAction(
227230required: true,
228231label: "stickerIds",
229232});
230-await discordMessagingActionRuntime.sendStickerDiscord(to, stickerIds, {
231- ...cfgOptions,
232- ...(accountId ? { accountId } : {}),
233- content,
234-});
233+await discordMessagingActionRuntime.sendStickerDiscord(to, stickerIds, withOpts({ content }));
235234return jsonResult({ ok: true });
236235}
237236case "poll": {
@@ -253,7 +252,7 @@ export async function handleDiscordMessagingAction(
253252await discordMessagingActionRuntime.sendPollDiscord(
254253to,
255254{ question, options: answers, maxSelections, durationHours },
256-{ ...cfgOptions, ...(accountId ? { accountId } : {}), content },
255+withOpts({ content }),
257256);
258257return jsonResult({ ok: true });
259258}
@@ -262,12 +261,10 @@ export async function handleDiscordMessagingAction(
262261throw new Error("Discord permissions are disabled.");
263262}
264263const channelId = resolveChannelId();
265-const permissions = accountId
266- ? await discordMessagingActionRuntime.fetchChannelPermissionsDiscord(channelId, {
267- ...cfgOptions,
268- accountId,
269-})
270- : await discordMessagingActionRuntime.fetchChannelPermissionsDiscord(channelId, cfgOptions);
264+const permissions = await discordMessagingActionRuntime.fetchChannelPermissionsDiscord(
265+channelId,
266+withOpts(),
267+);
271268return jsonResult({ ok: true, permissions });
272269}
273270case "fetchMessage": {
@@ -289,12 +286,11 @@ export async function handleDiscordMessagingAction(
289286"Discord message fetch requires guildId, channelId, and messageId (or a valid messageLink).",
290287);
291288}
292-const message = accountId
293- ? await discordMessagingActionRuntime.fetchMessageDiscord(channelId, messageId, {
294- ...cfgOptions,
295- accountId,
296-})
297- : await discordMessagingActionRuntime.fetchMessageDiscord(channelId, messageId, cfgOptions);
289+const message = await discordMessagingActionRuntime.fetchMessageDiscord(
290+channelId,
291+messageId,
292+withOpts(),
293+);
298294return jsonResult({
299295ok: true,
300296message: normalizeMessage(message),
@@ -314,12 +310,11 @@ export async function handleDiscordMessagingAction(
314310after: readStringParam(params, "after"),
315311around: readStringParam(params, "around"),
316312};
317-const messages = accountId
318- ? await discordMessagingActionRuntime.readMessagesDiscord(channelId, query, {
319- ...cfgOptions,
320- accountId,
321-})
322- : await discordMessagingActionRuntime.readMessagesDiscord(channelId, query, cfgOptions);
313+const messages = await discordMessagingActionRuntime.readMessagesDiscord(
314+channelId,
315+query,
316+withOpts(),
317+);
323318return jsonResult({
324319ok: true,
325320messages: messages.map((message) => normalizeMessage(message)),
@@ -372,8 +367,7 @@ export async function handleDiscordMessagingAction(
372367to,
373368payload,
374369{
375- ...cfgOptions,
376- ...(accountId ? { accountId } : {}),
370+ ...withOpts(),
377371 silent,
378372replyTo: replyTo ?? undefined,
379373sessionKey: sessionKey ?? undefined,
@@ -399,17 +393,15 @@ export async function handleDiscordMessagingAction(
399393}
400394assertMediaNotDataUrl(mediaUrl);
401395const result = await discordMessagingActionRuntime.sendVoiceMessageDiscord(to, mediaUrl, {
402- ...cfgOptions,
403- ...(accountId ? { accountId } : {}),
396+ ...withOpts(),
404397 replyTo,
405398 silent,
406399});
407400return jsonResult({ ok: true, result, voiceMessage: true });
408401}
409402410403const result = await discordMessagingActionRuntime.sendMessageDiscord(to, content ?? "", {
411- ...cfgOptions,
412- ...(accountId ? { accountId } : {}),
404+ ...withOpts(),
413405 mediaUrl,
414406filename: filename ?? undefined,
415407mediaLocalRoots: options?.mediaLocalRoots,
@@ -432,19 +424,12 @@ export async function handleDiscordMessagingAction(
432424const content = readStringParam(params, "content", {
433425required: true,
434426});
435-const message = accountId
436- ? await discordMessagingActionRuntime.editMessageDiscord(
437-channelId,
438-messageId,
439-{ content },
440-{ ...cfgOptions, accountId },
441-)
442- : await discordMessagingActionRuntime.editMessageDiscord(
443-channelId,
444-messageId,
445-{ content },
446-cfgOptions,
447-);
427+const message = await discordMessagingActionRuntime.editMessageDiscord(
428+channelId,
429+messageId,
430+{ content },
431+withOpts(),
432+);
448433return jsonResult({ ok: true, message });
449434}
450435case "deleteMessage": {
@@ -455,14 +440,7 @@ export async function handleDiscordMessagingAction(
455440const messageId = readStringParam(params, "messageId", {
456441required: true,
457442});
458-if (accountId) {
459-await discordMessagingActionRuntime.deleteMessageDiscord(channelId, messageId, {
460- ...cfgOptions,
461- accountId,
462-});
463-} else {
464-await discordMessagingActionRuntime.deleteMessageDiscord(channelId, messageId, cfgOptions);
465-}
443+await discordMessagingActionRuntime.deleteMessageDiscord(channelId, messageId, withOpts());
466444return jsonResult({ ok: true });
467445}
468446case "threadCreate": {
@@ -482,12 +460,11 @@ export async function handleDiscordMessagingAction(
482460 content,
483461appliedTags: appliedTags ?? undefined,
484462};
485-const thread = accountId
486- ? await discordMessagingActionRuntime.createThreadDiscord(channelId, payload, {
487- ...cfgOptions,
488- accountId,
489-})
490- : await discordMessagingActionRuntime.createThreadDiscord(channelId, payload, cfgOptions);
463+const thread = await discordMessagingActionRuntime.createThreadDiscord(
464+channelId,
465+payload,
466+withOpts(),
467+);
491468return jsonResult({ ok: true, thread });
492469}
493470case "threadList": {
@@ -501,27 +478,16 @@ export async function handleDiscordMessagingAction(
501478const includeArchived = readBooleanParam(params, "includeArchived");
502479const before = readStringParam(params, "before");
503480const limit = readNumberParam(params, "limit");
504-const threads = accountId
505- ? await discordMessagingActionRuntime.listThreadsDiscord(
506-{
507- guildId,
508- channelId,
509- includeArchived,
510- before,
511- limit,
512-},
513-{ ...cfgOptions, accountId },
514-)
515- : await discordMessagingActionRuntime.listThreadsDiscord(
516-{
517- guildId,
518- channelId,
519- includeArchived,
520- before,
521- limit,
522-},
523-cfgOptions,
524-);
481+const threads = await discordMessagingActionRuntime.listThreadsDiscord(
482+{
483+ guildId,
484+ channelId,
485+ includeArchived,
486+ before,
487+ limit,
488+},
489+withOpts(),
490+);
525491return jsonResult({ ok: true, threads });
526492}
527493case "threadReply": {
@@ -538,8 +504,7 @@ export async function handleDiscordMessagingAction(
538504`channel:${channelId}`,
539505content,
540506{
541- ...cfgOptions,
542- ...(accountId ? { accountId } : {}),
507+ ...withOpts(),
543508 mediaUrl,
544509mediaLocalRoots: options?.mediaLocalRoots,
545510mediaReadFile: options?.mediaReadFile,
@@ -556,14 +521,7 @@ export async function handleDiscordMessagingAction(
556521const messageId = readStringParam(params, "messageId", {
557522required: true,
558523});
559-if (accountId) {
560-await discordMessagingActionRuntime.pinMessageDiscord(channelId, messageId, {
561- ...cfgOptions,
562- accountId,
563-});
564-} else {
565-await discordMessagingActionRuntime.pinMessageDiscord(channelId, messageId, cfgOptions);
566-}
524+await discordMessagingActionRuntime.pinMessageDiscord(channelId, messageId, withOpts());
567525return jsonResult({ ok: true });
568526}
569527case "unpinMessage": {
@@ -574,27 +532,15 @@ export async function handleDiscordMessagingAction(
574532const messageId = readStringParam(params, "messageId", {
575533required: true,
576534});
577-if (accountId) {
578-await discordMessagingActionRuntime.unpinMessageDiscord(channelId, messageId, {
579- ...cfgOptions,
580- accountId,
581-});
582-} else {
583-await discordMessagingActionRuntime.unpinMessageDiscord(channelId, messageId, cfgOptions);
584-}
535+await discordMessagingActionRuntime.unpinMessageDiscord(channelId, messageId, withOpts());
585536return jsonResult({ ok: true });
586537}
587538case "listPins": {
588539if (!isActionEnabled("pins")) {
589540throw new Error("Discord pins are disabled.");
590541}
591542const channelId = resolveChannelId();
592-const pins = accountId
593- ? await discordMessagingActionRuntime.listPinsDiscord(channelId, {
594- ...cfgOptions,
595- accountId,
596-})
597- : await discordMessagingActionRuntime.listPinsDiscord(channelId, cfgOptions);
543+const pins = await discordMessagingActionRuntime.listPinsDiscord(channelId, withOpts());
598544return jsonResult({ ok: true, pins: pins.map((pin) => normalizeMessage(pin)) });
599545}
600546case "searchMessages": {
@@ -614,27 +560,16 @@ export async function handleDiscordMessagingAction(
614560const limit = readNumberParam(params, "limit");
615561const channelIdList = [...(channelIds ?? []), ...(channelId ? [channelId] : [])];
616562const authorIdList = [...(authorIds ?? []), ...(authorId ? [authorId] : [])];
617-const results = accountId
618- ? await discordMessagingActionRuntime.searchMessagesDiscord(
619-{
620- guildId,
621- content,
622-channelIds: channelIdList.length ? channelIdList : undefined,
623-authorIds: authorIdList.length ? authorIdList : undefined,
624- limit,
625-},
626-{ ...cfgOptions, accountId },
627-)
628- : await discordMessagingActionRuntime.searchMessagesDiscord(
629-{
630- guildId,
631- content,
632-channelIds: channelIdList.length ? channelIdList : undefined,
633-authorIds: authorIdList.length ? authorIdList : undefined,
634- limit,
635-},
636-cfgOptions,
637-);
563+const results = await discordMessagingActionRuntime.searchMessagesDiscord(
564+{
565+ guildId,
566+ content,
567+channelIds: channelIdList.length ? channelIdList : undefined,
568+authorIds: authorIdList.length ? authorIdList : undefined,
569+ limit,
570+},
571+withOpts(),
572+);
638573if (!results || typeof results !== "object") {
639574return jsonResult({ ok: true, results });
640575}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。