From 0ae0817598be2c5664630e5b9449b13fffc910dd Mon Sep 17 00:00:00 2001 From: vibe-bot Date: Mon, 11 Aug 2025 00:00:08 +0200 Subject: [PATCH] feat(entrance-exit): Support ?entrance remove / ?exit remove (clear mapping); Help-Text aktualisiert --- server/src/index.ts | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/server/src/index.ts b/server/src/index.ts index 88bbef4..cb43e2d 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -280,8 +280,8 @@ async function handleCommand(message: Message, content: string) { 'Available commands\n' + '?help - zeigt diese Hilfe\n' + '?list - listet alle Audio-Dateien (mp3/wav)\n' + - '?entrance - setze deinen Entrance-Sound\n' + - '?exit - setze deinen Exit-Sound (optional)\n' + '?entrance | remove - setze oder entferne deinen Entrance-Sound\n' + + '?exit | remove - setze oder entferne deinen Exit-Sound\n' ); return; } @@ -293,8 +293,19 @@ async function handleCommand(message: Message, content: string) { return; } if (cmd === '?entrance') { - const [, fileName] = parts; - if (!fileName) { await reply('Verwendung: ?entrance '); return; } + const [, fileNameRaw] = parts; + const userId = message.author?.id ?? ''; + if (!userId) { await reply('Kein Benutzer erkannt.'); return; } + const fileName = fileNameRaw?.trim(); + if (!fileName) { await reply('Verwendung: ?entrance | remove'); return; } + if (/^(remove|clear|delete)$/i.test(fileName)) { + persistedState.entranceSounds = persistedState.entranceSounds ?? {}; + delete persistedState.entranceSounds[userId]; + writePersistedState(persistedState); + try { console.log(`${new Date().toISOString()} | Entrance removed: user=${userId} (${message.author?.tag || 'unknown'})`); } catch {} + await reply('Entrance-Sound entfernt.'); + return; + } const lower = fileName.toLowerCase(); if (!(lower.endsWith('.mp3') || lower.endsWith('.wav'))) { await reply('Nur .mp3 oder .wav Dateien sind erlaubt'); return; } const resolve = (() => { @@ -306,7 +317,6 @@ async function handleCommand(message: Message, content: string) { } catch { return ''; } })(); if (!resolve) { await reply('Datei nicht gefunden. Nutze ?list.'); return; } - const userId = message.author?.id ?? ''; if (!userId) { await reply('Kein Benutzer erkannt.'); return; } persistedState.entranceSounds = persistedState.entranceSounds ?? {}; persistedState.entranceSounds[userId] = resolve; writePersistedState(persistedState); @@ -316,8 +326,19 @@ async function handleCommand(message: Message, content: string) { await reply(`Entrance-Sound gesetzt: ${resolve}`); return; } if (cmd === '?exit') { - const [, fileName] = parts; - if (!fileName) { await reply('Verwendung: ?exit '); return; } + const [, fileNameRaw] = parts; + const userId = message.author?.id ?? ''; + if (!userId) { await reply('Kein Benutzer erkannt.'); return; } + const fileName = fileNameRaw?.trim(); + if (!fileName) { await reply('Verwendung: ?exit | remove'); return; } + if (/^(remove|clear|delete)$/i.test(fileName)) { + persistedState.exitSounds = persistedState.exitSounds ?? {}; + delete persistedState.exitSounds[userId]; + writePersistedState(persistedState); + try { console.log(`${new Date().toISOString()} | Exit removed: user=${userId} (${message.author?.tag || 'unknown'})`); } catch {} + await reply('Exit-Sound entfernt.'); + return; + } const lower = fileName.toLowerCase(); if (!(lower.endsWith('.mp3') || lower.endsWith('.wav'))) { await reply('Nur .mp3 oder .wav Dateien sind erlaubt'); return; } const resolve = (() => { @@ -329,7 +350,6 @@ async function handleCommand(message: Message, content: string) { } catch { return ''; } })(); if (!resolve) { await reply('Datei nicht gefunden. Nutze ?list.'); return; } - const userId = message.author?.id ?? ''; if (!userId) { await reply('Kein Benutzer erkannt.'); return; } persistedState.exitSounds = persistedState.exitSounds ?? {}; persistedState.exitSounds[userId] = resolve; writePersistedState(persistedState);