Telegram - zweiter Bot - Nachrichten löschen

Hi zusammen.

Ich habe mir einen zweiten Bot angelegt. Den habe ich auch in HA drin und kann in den Chat auch Nachrichten senden. Wie kann ich in diesem Chat jedoch Nachrichten auch löschen?

Hintergrund: Ich habe mir den Bot erstellt, damit ich dort z.b. nur Nachrichten schicke, wenn zb. eine Automation ausgeführt wurde und ich dort sehe per Nachricht, was gerade aktiv ist.

Also z.b. xy ist gerade aktiv

Wenn ich dann etwas ausschalte, möchte ich aber die erste Nachricht, die ja in dem Chat ist gelöscht wird und stattdessen eine Nachricht hinterlegt wird: xy ist gerade deaktiviert.

Dachte das geht einfach mit “Telegram bot: Nachricht löschen”. Bei Benachtigungsziel habe ich den Bot ausgewählt und bei der Nachrichten-ID habe ich “test” eingetragen, was der Nachricht entspricht, die ich vorher dorthin gesendet habe. Geht das nicht so einfach, dass man den Text der Nachricht dort angibt?

Danke vorab

Edit: Wenn ich bei der Nachrichten-ID last nehme, löscht er mir die letzte Nachricht. Möchte aber genau den Text löschen, den ich gesendet habe.

Nach Text löschen geht leider nicht: Die Aktion braucht die numerische Nachrichten-ID, nicht den Inhalt, deshalb schlägt „test“ mit dem Fehler fehl, den du siehst. Der saubere Weg ist, dir die ID beim Senden der „aktiv“-Nachricht zu merken und in einem Helfer zu speichern, statt sie später zu suchen. Beim Ausschalten übergibst du dann genau diese gespeicherte ID an „Telegram bot: Nachricht löschen“, und erst danach schickst du die „deaktiviert“-Nachricht.

Das habe ich mit Hilfe von google auch schon versucht. Aber auch mit dem Speichern der ersten Nachricht, funktioniert es dann auch nicht, diese Nachricht zu löschen. Hast du das Szenario selbst mal getestet, ob es funktioniert?

alias: "Telegram: Testnachricht senden und loeschen"
description: "Sendet 'Das ist ein Test' und loescht genau diese Nachricht nach 10 Sekunden"
trigger:
  - platform: time
    at: "12:00:00" # Dein gewünschter Auslöser
condition: []
action:
  # 1. Nachricht senden und die Antwort in 'telegram_antwort' sichern
  - action: telegram_bot.send_message
    metadata: {}
    data:
      entity_id:
        - notify.dakito
      message: Das ist ein Test
    response_variable: telegram_antwort

  # 2. 10 Sekunden warten
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0

  # 3. Direktes Löschen über den ersten Listeneintrag
  - action: telegram_bot.delete_message
    data:
      chat_id: "{{ telegram_antwort.chats[0].chat_id }}"
      message_id: "{{ telegram_antwort.chats[0].message_id }}"

Gute Nachfrage, und ehrlich gesagt: Ich habe dieses Szenario bei mir so nicht getestet, deshalb will ich dir kein Ergebnis behaupten, das ich nicht selbst gesehen habe. Als nächsten Schritt würde ich genau deine Testautomation laufen lassen, also eine Testnachricht senden, zehn Sekunden warten und sie dann über die gespeicherte Nachrichten-ID löschen, und danach im Protokoll prüfen, ob die Löschaktion wirklich ohne Fehler durchläuft und die Nachricht im Chat verschwunden ist. Sag gern, was dabei herauskommt, dann lässt sich eingrenzen, ob die gespeicherte ID ankommt oder ob schon der Sende-Schritt keine brauchbare ID liefert.

Dein Ansatz mit response_variable ist grundsätzlich richtig. Da du jetzt zwei Telegram-Bots eingerichtet hast, würde ich prüfen, ob die Aktionen den richtigen Bot ansprechen: Bei mehreren Bots braucht sowohl telegram_bot.send_message als auch delete_message die config_entry_id des Bots, sonst landet der Aufruf beim falschen oder gar keinem. Was steht im Ablaufprotokoll der Automation bei delete_message, kommt dort ein Fehler?