From c28c9fe8f0691f5161dc834f03561343cc49aa1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=B6rdle=20Bot?= Date: Fri, 5 Dec 2025 11:33:39 +0100 Subject: [PATCH] =?UTF-8?q?Fix:=20Verbesserte=20Erkennung=20von=20umformul?= =?UTF-8?q?ierten=20Nachrichten=20-=20nur=20inhaltliche=20=C3=84nderungen?= =?UTF-8?q?=20werden=20erkannt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/rewrite-message/route.ts | 25 ++++++++++++++++++++----- components/Game.tsx | 7 ++++++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/app/api/rewrite-message/route.ts b/app/api/rewrite-message/route.ts index a264919..f09e017 100644 --- a/app/api/rewrite-message/route.ts +++ b/app/api/rewrite-message/route.ts @@ -65,18 +65,33 @@ Message: "${message}"`; // e.g., "(This message is a friendly, positive comment expressing appreciation. No rewriting is necessary.)" rewrittenMessage = rewrittenMessage.replace(/\s*\([^)]*\)\s*/g, '').trim(); - // Compare with original message (case-insensitive and ignoring extra whitespace) + // Remove surrounding quotes if present (AI sometimes adds quotes) + // Handle both single and double quotes, and multiple layers of quotes + rewrittenMessage = rewrittenMessage.replace(/^["']+|["']+$/g, '').trim(); + + // Normalize both messages for comparison (remove extra whitespace, normalize quotes, case-insensitive) + const normalizeForComparison = (text: string): string => { + return text + .trim() + .replace(/["']/g, '') // Remove all quotes for comparison + .replace(/\s+/g, ' ') // Normalize whitespace + .toLowerCase() + .replace(/[.,!?;:]\s*$/, ''); // Remove trailing punctuation for comparison + }; + const originalTrimmed = message.trim(); const rewrittenTrimmed = rewrittenMessage.trim(); + const originalNormalized = normalizeForComparison(originalTrimmed); + const rewrittenNormalized = normalizeForComparison(rewrittenTrimmed); - // Check if message was actually changed (normalize for comparison) - const wasChanged = rewrittenTrimmed.toLowerCase() !== originalTrimmed.toLowerCase() && - rewrittenTrimmed !== originalTrimmed; + // Check if message was actually changed (content-wise, not just formatting) + // Only consider it changed if the normalized content is different + const wasChanged = originalNormalized !== rewrittenNormalized; if (wasChanged) { rewrittenMessage = rewrittenTrimmed + " (autocorrected by Polite-Bot)"; } else { - // Return original message if not changed + // Return original message if not changed (without suffix) rewrittenMessage = originalTrimmed; } diff --git a/components/Game.tsx b/components/Game.tsx index fb8c6a6..89b8e58 100644 --- a/components/Game.tsx +++ b/components/Game.tsx @@ -348,7 +348,12 @@ export default function Game({ dailyPuzzle, genre = null, isSpecial = false, max // The API adds "(autocorrected by Polite-Bot)" suffix only if message was changed const wasChanged = finalMessage.includes('(autocorrected by Polite-Bot)'); if (wasChanged) { - setRewrittenMessage(finalMessage); + // Remove the suffix for display + const displayMessage = finalMessage.replace(/\s*\(autocorrected by Polite-Bot\)\s*/g, '').trim(); + setRewrittenMessage(displayMessage); + } else { + // Ensure rewrittenMessage is not set if message wasn't changed + setRewrittenMessage(null); } } }