diff --git a/src/worker/events.rs b/src/worker/events.rs index ca4819f..c96cfd6 100644 --- a/src/worker/events.rs +++ b/src/worker/events.rs @@ -704,37 +704,32 @@ impl EventsWorker { (None, None) }; - // Extrahiere Geld-Beträge aus Effekten (für Diebstahl/Geldsegen) - let money_change_info = effect_results.iter().find(|e| e.get("type") == Some(&json!("money_change"))); - let money_absolute = money_change_info.and_then(|e| e.get("absolute").and_then(|v| v.as_f64())); + // Keine Benachrichtigung erstellen, wenn kein Effekt angewendet wurde + if effect_results.is_empty() { + eprintln!( + "[EventsWorker] Persönliches Ereignis '{}' für Spieler {} übersprungen (keine Effekte)", + event.id, user_id + ); + return Ok(()); + } - // Frontend: `tr` ist der i18n-Key, `value` enthält nur die Daten (ohne deutsche Übersetzungen) + // Baue die Benachrichtigung gemäß EVENT_JSON_MESSAGES.md Struktur let mut notification_json = serde_json::json!({ - "tr": format!("random_event.{}", event.id) + "tr": format!("random_event.{}", event.id), + "event_id": event.id, + "event_type": "personal", + "effects": effect_results }); - // value-Objekt: nur die relevanten Daten, keine deutschen Übersetzungen - let mut value_obj = serde_json::json!({}); - - // Geld-Beträge: wichtigster Wert für Geldsegen/Diebstahl - if let Some(absolute) = money_absolute { - value_obj["money_change_absolute"] = serde_json::json!(absolute); - } - // Character-Informationen (falls vorhanden) if let Some(cid) = top_character_id { - value_obj["character_id"] = serde_json::json!(cid); + notification_json["character_id"] = serde_json::json!(cid); } if let Some(fn_) = top_first_name { - value_obj["character_first_name"] = serde_json::json!(fn_); + notification_json["character_first_name"] = serde_json::json!(fn_); } if let Some(ln_) = top_last_name { - value_obj["character_last_name"] = serde_json::json!(ln_); - } - - // Nur value setzen, wenn es nicht leer ist - if !value_obj.as_object().unwrap().is_empty() { - notification_json["value"] = value_obj; + notification_json["character_last_name"] = serde_json::json!(ln_); } Self::notify_user(