diff --git a/app.py b/app.py index b9d73bf..50b3d8c 100644 --- a/app.py +++ b/app.py @@ -2264,21 +2264,29 @@ def process_beat_tasks(): logger.info("[TaskBeat] Task #%d abgeschlossen.", task['id']) # Agent-Kommandos parsen (@SEND_EMAIL, @UPDATE_TEAM_MEMBER, etc.) + # Merken ob der Agent selbst schon eine Telegram-Nachricht verschickt hat + agent_sent_telegram = bool(re.search(r'', response, re.IGNORECASE)) try: parse_agent_commands('orchestrator', response, task_id=task['id']) except Exception as e: logger.error("[TaskBeat] parse_agent_commands Fehler: %s", str(e)) - # Telegram-Antwort senden - if task.get('type') == 'telegram' and task.get('telegram_chat_id'): + # Telegram-Antwort senden — aber nur wenn der Agent nicht schon selbst + # eine Nachricht über geschickt hat (sonst Doppel-Nachricht) + if task.get('type') == 'telegram' and task.get('telegram_chat_id') and not agent_sent_telegram: try: - telegram_msg = ( - f"✅ Task #{task['id']} abgeschlossen!\n\n" - f"📝 Anfrage: {task.get('title', 'N/A')}\n\n" - f"💬 Antwort:\n{response[:4000]}" - ) - send_telegram_message(task['telegram_chat_id'], telegram_msg) - logger.info("[TaskBeat] Telegram-Antwort gesendet für Task #%d", task['id']) + # Kommando-Blöcke aus der Antwort entfernen bevor wir sie senden + clean_response = re.sub( + r'<(send_telegram|create_task|update_knowledge|update_agent_reminder|ask_orchestrator|send_email)[^>]*>.*?', + '', response, flags=re.DOTALL | re.IGNORECASE + ).strip() + if clean_response: + telegram_msg = ( + f"✅ Task #{task['id']} abgeschlossen!\n\n" + f"💬 {clean_response[:4000]}" + ) + send_telegram_message(task['telegram_chat_id'], telegram_msg) + logger.info("[TaskBeat] Telegram-Antwort gesendet für Task #%d", task['id']) except Exception as e: logger.error("[TaskBeat] Fehler beim Senden der Telegram-Antwort: %s", str(e)) continue @@ -2388,15 +2396,26 @@ Arbeite diesen Teil ab und liefere ein vollständiges Ergebnis.""", logger.info("[TaskBeat] Task #%d abgeschlossen.", task['id']) # Telegram-Benachrichtigung wenn Task von Telegram kam - if task.get('type') == 'telegram' and task.get('telegram_chat_id'): + # Nur senden wenn Agent nicht bereits selbst verwendet hat + agent_sent_telegram = bool(re.search(r'', response, re.IGNORECASE)) + try: + parse_agent_commands(agent_key, response, task_id=task['id']) + except Exception as e: + logger.error("[TaskBeat] parse_agent_commands Fehler (sub): %s", str(e)) + + if task.get('type') == 'telegram' and task.get('telegram_chat_id') and not agent_sent_telegram: try: - telegram_msg = ( - f"✅ Task #{task['id']} abgeschlossen!\n\n" - f"📝 Anfrage: {task.get('title', 'N/A')}\n\n" - f"💬 Antwort:\n{response[:4000]}" # Telegram limit: 4096 chars - ) - send_telegram_message(task['telegram_chat_id'], telegram_msg) - logger.info("[TaskBeat] Telegram-Antwort gesendet für Task #%d", task['id']) + clean_response = re.sub( + r'<(send_telegram|create_task|update_knowledge|update_agent_reminder|ask_orchestrator|send_email)[^>]*>.*?', + '', response, flags=re.DOTALL | re.IGNORECASE + ).strip() + if clean_response: + telegram_msg = ( + f"✅ Task #{task['id']} abgeschlossen!\n\n" + f"💬 {clean_response[:4000]}" + ) + send_telegram_message(task['telegram_chat_id'], telegram_msg) + logger.info("[TaskBeat] Telegram-Antwort gesendet für Task #%d", task['id']) except Exception as e: logger.error("[TaskBeat] Fehler beim Senden der Telegram-Antwort: %s", str(e))