@@ -44,6 +44,7 @@ import {
4444 type DiscordSendEmbeds ,
4545} from "../send.shared.js" ;
4646import { resolveDiscordChannelId } from "../targets.js" ;
47+ import { createDiscordActionOptions } from "./runtime.shared.js" ;
4748
4849export const discordMessagingActionRuntime = {
4950 createThreadDiscord,
@@ -135,6 +136,8 @@ export async function handleDiscordMessagingAction(
135136 throw new Error ( "Discord messaging actions require a resolved runtime config." ) ;
136137 }
137138 const cfgOptions = { cfg } ;
139+ const withOpts = ( extra ?: Record < string , unknown > ) =>
140+ createDiscordActionOptions ( { cfg, accountId, extra } ) ;
138141 const resolvedReactionAccountId = accountId ?? resolveDefaultDiscordAccountId ( cfg ) ;
139142 const resolveReactionChannelId = async ( ) => {
140143 const target =
@@ -227,11 +230,7 @@ export async function handleDiscordMessagingAction(
227230 required : true ,
228231 label : "stickerIds" ,
229232 } ) ;
230- await discordMessagingActionRuntime . sendStickerDiscord ( to , stickerIds , {
231- ...cfgOptions ,
232- ...( accountId ? { accountId } : { } ) ,
233- content,
234- } ) ;
233+ await discordMessagingActionRuntime . sendStickerDiscord ( to , stickerIds , withOpts ( { content } ) ) ;
235234 return jsonResult ( { ok : true } ) ;
236235 }
237236 case "poll" : {
@@ -253,7 +252,7 @@ export async function handleDiscordMessagingAction(
253252 await discordMessagingActionRuntime . sendPollDiscord (
254253 to ,
255254 { question, options : answers , maxSelections, durationHours } ,
256- { ... cfgOptions , ... ( accountId ? { accountId } : { } ) , content } ,
255+ withOpts ( { content } ) ,
257256 ) ;
258257 return jsonResult ( { ok : true } ) ;
259258 }
@@ -262,12 +261,10 @@ export async function handleDiscordMessagingAction(
262261 throw new Error ( "Discord permissions are disabled." ) ;
263262 }
264263 const 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+ ) ;
271268 return jsonResult ( { ok : true , permissions } ) ;
272269 }
273270 case "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+ ) ;
298294 return jsonResult ( {
299295 ok : true ,
300296 message : normalizeMessage ( message ) ,
@@ -314,12 +310,11 @@ export async function handleDiscordMessagingAction(
314310 after : readStringParam ( params , "after" ) ,
315311 around : 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+ ) ;
323318 return jsonResult ( {
324319 ok : true ,
325320 messages : messages . map ( ( message ) => normalizeMessage ( message ) ) ,
@@ -372,8 +367,7 @@ export async function handleDiscordMessagingAction(
372367 to ,
373368 payload ,
374369 {
375- ...cfgOptions ,
376- ...( accountId ? { accountId } : { } ) ,
370+ ...withOpts ( ) ,
377371 silent,
378372 replyTo : replyTo ?? undefined ,
379373 sessionKey : sessionKey ?? undefined ,
@@ -399,17 +393,15 @@ export async function handleDiscordMessagingAction(
399393 }
400394 assertMediaNotDataUrl ( mediaUrl ) ;
401395 const result = await discordMessagingActionRuntime . sendVoiceMessageDiscord ( to , mediaUrl , {
402- ...cfgOptions ,
403- ...( accountId ? { accountId } : { } ) ,
396+ ...withOpts ( ) ,
404397 replyTo,
405398 silent,
406399 } ) ;
407400 return jsonResult ( { ok : true , result, voiceMessage : true } ) ;
408401 }
409402
410403 const result = await discordMessagingActionRuntime . sendMessageDiscord ( to , content ?? "" , {
411- ...cfgOptions ,
412- ...( accountId ? { accountId } : { } ) ,
404+ ...withOpts ( ) ,
413405 mediaUrl,
414406 filename : filename ?? undefined ,
415407 mediaLocalRoots : options ?. mediaLocalRoots ,
@@ -432,19 +424,12 @@ export async function handleDiscordMessagingAction(
432424 const content = readStringParam ( params , "content" , {
433425 required : 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+ ) ;
448433 return jsonResult ( { ok : true , message } ) ;
449434 }
450435 case "deleteMessage" : {
@@ -455,14 +440,7 @@ export async function handleDiscordMessagingAction(
455440 const messageId = readStringParam ( params , "messageId" , {
456441 required : 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 ( ) ) ;
466444 return jsonResult ( { ok : true } ) ;
467445 }
468446 case "threadCreate" : {
@@ -482,12 +460,11 @@ export async function handleDiscordMessagingAction(
482460 content,
483461 appliedTags : 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+ ) ;
491468 return jsonResult ( { ok : true , thread } ) ;
492469 }
493470 case "threadList" : {
@@ -501,27 +478,16 @@ export async function handleDiscordMessagingAction(
501478 const includeArchived = readBooleanParam ( params , "includeArchived" ) ;
502479 const before = readStringParam ( params , "before" ) ;
503480 const 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+ ) ;
525491 return jsonResult ( { ok : true , threads } ) ;
526492 }
527493 case "threadReply" : {
@@ -538,8 +504,7 @@ export async function handleDiscordMessagingAction(
538504 `channel:${ channelId } ` ,
539505 content ,
540506 {
541- ...cfgOptions ,
542- ...( accountId ? { accountId } : { } ) ,
507+ ...withOpts ( ) ,
543508 mediaUrl,
544509 mediaLocalRoots : options ?. mediaLocalRoots ,
545510 mediaReadFile : options ?. mediaReadFile ,
@@ -556,14 +521,7 @@ export async function handleDiscordMessagingAction(
556521 const messageId = readStringParam ( params , "messageId" , {
557522 required : 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 ( ) ) ;
567525 return jsonResult ( { ok : true } ) ;
568526 }
569527 case "unpinMessage" : {
@@ -574,27 +532,15 @@ export async function handleDiscordMessagingAction(
574532 const messageId = readStringParam ( params , "messageId" , {
575533 required : 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 ( ) ) ;
585536 return jsonResult ( { ok : true } ) ;
586537 }
587538 case "listPins" : {
588539 if ( ! isActionEnabled ( "pins" ) ) {
589540 throw new Error ( "Discord pins are disabled." ) ;
590541 }
591542 const 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 ( ) ) ;
598544 return jsonResult ( { ok : true , pins : pins . map ( ( pin ) => normalizeMessage ( pin ) ) } ) ;
599545 }
600546 case "searchMessages" : {
@@ -614,27 +560,16 @@ export async function handleDiscordMessagingAction(
614560 const limit = readNumberParam ( params , "limit" ) ;
615561 const channelIdList = [ ...( channelIds ?? [ ] ) , ...( channelId ? [ channelId ] : [ ] ) ] ;
616562 const 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+ ) ;
638573 if ( ! results || typeof results !== "object" ) {
639574 return jsonResult ( { ok : true , results } ) ;
640575 }
0 commit comments