From 8b0b7c75cd7a9ac5a97a0b1f259dc4f5fcace0c9 Mon Sep 17 00:00:00 2001 From: vibe-bot Date: Fri, 8 Aug 2025 01:43:39 +0200 Subject: [PATCH] fix(server): remove pre-declaration use of 'state' when computing default volume --- server/src/index.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/server/src/index.ts b/server/src/index.ts index dd08caf..c9c0300 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -230,7 +230,6 @@ app.post('/api/play', async (req: Request, res: Response) => { volume?: number; // 0..1 }; if (!soundName || !guildId || !channelId) return res.status(400).json({ error: 'soundName, guildId, channelId erforderlich' }); - const safeVolume = typeof volume === 'number' && Number.isFinite(volume) ? Math.max(0, Math.min(1, volume)) : state?.currentVolume ?? 1; const filePath = path.join(SOUNDS_DIR, `${soundName}.mp3`); if (!fs.existsSync(filePath)) return res.status(404).json({ error: 'Sound nicht gefunden' }); @@ -319,15 +318,19 @@ app.post('/api/play', async (req: Request, res: Response) => { } console.log(`${new Date().toISOString()} | createAudioResource: ${filePath}`); + // Volume bestimmen: bevorzugt Request-Volume, sonst bisheriger State-Wert, sonst 1 + const volumeToUse = typeof volume === 'number' && Number.isFinite(volume) + ? Math.max(0, Math.min(1, volume)) + : (state.currentVolume ?? 1); const resource = createAudioResource(filePath, { inlineVolume: true }); if (resource.volume) { - resource.volume.setVolume(safeVolume); - console.log(`${new Date().toISOString()} | setVolume(${safeVolume}) for ${soundName}`); + resource.volume.setVolume(volumeToUse); + console.log(`${new Date().toISOString()} | setVolume(${volumeToUse}) for ${soundName}`); } state.player.stop(); state.player.play(resource); state.currentResource = resource; - state.currentVolume = safeVolume; + state.currentVolume = volumeToUse; console.log(`${new Date().toISOString()} | player.play() called for ${soundName}`); return res.json({ ok: true }); } catch (err: any) {