From 111ba0a139af22c33627ede62d94a0b9924ee50d Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Sat, 13 Jun 2026 13:36:13 +0700 Subject: [PATCH] chore(auto): task completed - unknown --- .../src/modules/voice-recording/recorder.ts | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/services/discord-gateway/src/modules/voice-recording/recorder.ts b/services/discord-gateway/src/modules/voice-recording/recorder.ts index 8ec7c76..90e87ad 100644 --- a/services/discord-gateway/src/modules/voice-recording/recorder.ts +++ b/services/discord-gateway/src/modules/voice-recording/recorder.ts @@ -15,6 +15,7 @@ import type { EventBroadcaster } from "../event-broadcaster/eventBroadcaster.js" import { createRecordingSession, type RecordingSession, + type SessionRecordingMetadata, } from "./recorder/sessionRecording.js"; import { createSpeakingHandler } from "./recorder/speakingHandler.js"; @@ -188,9 +189,11 @@ export function stopRecording(guildId: string): void { const session = activeSessions.get(guildId); finalizeActiveRecordingSession(guildId); - // Broadcast voice_recording_stopped event + // Broadcast voice_recording_stopped + finalize session if (session && _eventBroadcaster) { const snapshot = session.snapshot(Date.now()); + const stoppedAt = Date.now(); + _eventBroadcaster.voiceRecordingStopped({ guild_id: guildId, session_id: session.sessionId, @@ -198,7 +201,22 @@ export function stopRecording(guildId: string): void { participants: snapshot.participants.length, segment_count: snapshot.segments.length, status: snapshot.status, - stopped_at: Date.now(), + stopped_at: stoppedAt, }).catch(() => {}); + + // Auto-enqueue muxer job if there are multiple segments + const segments = snapshot.segments; + if (segments.length >= 2) { + const outputFile = `${config.RECORDINGS_DIR}/merged/${session.sessionId}.ogg`; + import("./muxer.js").then(({ enqueueMuxerJob }) => { + enqueueMuxerJob({ + inputs: segments.map((s) => s.oggPath), + output: outputFile, + guildId, + channelId: snapshot.channelId, + sessionId: session.sessionId, + }).catch(() => {}); + }).catch(() => {}); + } } }