From bf9d6d60e3dd4fc5ba6ab12d4d4d7e1428039ef1 Mon Sep 17 00:00:00 2001 From: vibe-bot Date: Sat, 9 Aug 2025 00:31:46 +0200 Subject: [PATCH] =?UTF-8?q?Persistenz:=20state.json=20ins=20Sounds-Volume?= =?UTF-8?q?=20verschoben=20(Migration=20vom=20alten=20Pfad).=20totalPlays?= =?UTF-8?q?=20bleibt=20=C3=BCber=20Deployments=20erhalten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/index.ts | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/server/src/index.ts b/server/src/index.ts index 8afa317..550e600 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -44,25 +44,40 @@ if (!DISCORD_TOKEN) { fs.mkdirSync(SOUNDS_DIR, { recursive: true }); -// Persistente Lautstärke pro Guild speichern +// Persistente Lautstärke und Play-Zähler speichern type PersistedState = { volumes: Record; plays: Record; totalPlays: number }; -const STATE_FILE = path.join(path.resolve(SOUNDS_DIR, '..'), 'state.json'); +// Neuer, persistenter Speicherort direkt im Sounds-Volume +const STATE_FILE_NEW = path.join(SOUNDS_DIR, 'state.json'); +// Alter Speicherort (eine Ebene über SOUNDS_DIR). Wird für Migration gelesen, falls vorhanden. +const STATE_FILE_OLD = path.join(path.resolve(SOUNDS_DIR, '..'), 'state.json'); function readPersistedState(): PersistedState { try { - if (fs.existsSync(STATE_FILE)) { - const raw = fs.readFileSync(STATE_FILE, 'utf8'); + // 1) Bevorzugt neuen Speicherort lesen + if (fs.existsSync(STATE_FILE_NEW)) { + const raw = fs.readFileSync(STATE_FILE_NEW, 'utf8'); const parsed = JSON.parse(raw); return { volumes: parsed.volumes ?? {}, plays: parsed.plays ?? {}, totalPlays: parsed.totalPlays ?? 0 } as PersistedState; } + // 2) Fallback: alten Speicherort lesen und sofort nach NEW migrieren + if (fs.existsSync(STATE_FILE_OLD)) { + const raw = fs.readFileSync(STATE_FILE_OLD, 'utf8'); + const parsed = JSON.parse(raw); + const migrated: PersistedState = { volumes: parsed.volumes ?? {}, plays: parsed.plays ?? {}, totalPlays: parsed.totalPlays ?? 0 }; + try { + fs.mkdirSync(path.dirname(STATE_FILE_NEW), { recursive: true }); + fs.writeFileSync(STATE_FILE_NEW, JSON.stringify(migrated, null, 2), 'utf8'); + } catch {} + return migrated; + } } catch {} return { volumes: {}, plays: {}, totalPlays: 0 }; } function writePersistedState(state: PersistedState): void { try { - fs.mkdirSync(path.dirname(STATE_FILE), { recursive: true }); - fs.writeFileSync(STATE_FILE, JSON.stringify(state, null, 2), 'utf8'); + fs.mkdirSync(path.dirname(STATE_FILE_NEW), { recursive: true }); + fs.writeFileSync(STATE_FILE_NEW, JSON.stringify(state, null, 2), 'utf8'); } catch (e) { console.warn('Persisted state konnte nicht geschrieben werden:', e); }