@@ -210,6 +210,19 @@ function resolveOutboundMediaReadFile(ctx: OutboundMediaAccessContext) {
210210 return ctx . mediaAccess ?. readFile ?? ctx . mediaReadFile ;
211211}
212212
213+ function resolveHostReadMediaAccess (
214+ ctx : OutboundMediaAccessContext ,
215+ ) : OutboundMediaAccessContext [ "mediaAccess" ] | undefined {
216+ const mediaLocalRoots = resolveOutboundMediaLocalRoots ( ctx ) ;
217+ if ( ! ctx . mediaAccess && ! mediaLocalRoots ) {
218+ return undefined ;
219+ }
220+ return {
221+ ...( ctx . mediaAccess ?? { } ) ,
222+ ...( mediaLocalRoots ? { localRoots : mediaLocalRoots } : { } ) ,
223+ } ;
224+ }
225+
213226function mediaFileTypeForKind ( mediaKind : QQBotMediaKind ) : MediaFileType {
214227 switch ( mediaKind ) {
215228 case "image" :
@@ -265,12 +278,12 @@ async function stageHostReadVoice(
265278 return null ;
266279 }
267280 const hostReadMediaPath = resolveHostReadMediaPath ( ctx , mediaPath ) ;
281+ const mediaAccess = resolveHostReadMediaAccess ( ctx ) ;
268282 const loaded = await loadOutboundMediaFromUrl ( hostReadMediaPath , {
269283 maxBytes : getMaxUploadSize ( MediaFileType . VOICE ) ,
270- mediaAccess : ctx . mediaAccess ,
271- mediaLocalRoots : ctx . mediaLocalRoots ,
284+ mediaAccess,
272285 mediaReadFile,
273- workspaceDir : ctx . mediaAccess ?. workspaceDir ,
286+ workspaceDir : mediaAccess ?. workspaceDir ,
274287 } ) ;
275288 const stagedDir = getQQBotMediaDir ( "host-read" , "voice" ) ;
276289 await mkdir ( stagedDir , { recursive : true } ) ;
@@ -292,13 +305,13 @@ async function trySendViaHostRead(
292305 return null ;
293306 }
294307 const hostReadMediaPath = resolveHostReadMediaPath ( ctx , mediaPath ) ;
308+ const mediaAccess = resolveHostReadMediaAccess ( ctx ) ;
295309 try {
296310 const loaded = await loadOutboundMediaFromUrl ( hostReadMediaPath , {
297311 maxBytes : getMaxUploadSize ( mediaFileTypeForKind ( mediaKind ) ) ,
298- mediaAccess : ctx . mediaAccess ,
299- mediaLocalRoots : ctx . mediaLocalRoots ,
312+ mediaAccess,
300313 mediaReadFile,
301- workspaceDir : ctx . mediaAccess ?. workspaceDir ,
314+ workspaceDir : mediaAccess ?. workspaceDir ,
302315 } ) ;
303316 const kind = senderKindForLoadedMedia ( mediaKind , loaded . kind ) ;
304317 const creds = accountToCreds ( ctx . account ) ;
0 commit comments