Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Frage] Telegram botSendMessageId von gesendeter Nachricht bestimmen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    936

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Frage] Telegram botSendMessageId von gesendeter Nachricht bestimmen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
6 Beiträge 2 Kommentatoren 468 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Christof.KacC Offline
    Christof.KacC Offline
    Christof.Kac
    schrieb am zuletzt editiert von
    #1

    Hi,
    ich habe ein Skript, welches mir jede halbe Stunde eine Telegrambotschaft schickt, sobald die Luftfeuchtigkeit zu hoch ist.
    Da damit der Chatverlauf überfüllt ist, möchte ich eine Botschaft senden und diese danach mit "editMessageText" editieren.

    Dafür benötige ich die korrekte botSendMessageId.

    Die botSendMessageId kann leider nicht sofort nach dem Senden abgefragt werden (folgende Zeilen geben mir die vorherige MessageId zurück):

    sendTo('telegram', 'Testbotschaft');
    log(getState("telegram.0.communicate.botSendMessageId").val);
    
    

    Leider funktioniert das Callback aus der Doku gar nicht:

    sendTo('telegram', {text: 'Test message'}, function (res) {
        log(getState("telegram.0.communicate.botSendMessageId").val);
    });
    

    Der Log-Befehl wird einfach nicht ausgeführt.

    Mein Workaround wäre über setTimeout die botSendMessageId nach z.B. einer Sekunde abzufragen, dies birgt aber die Gefahr, dass es mal länger dauern kann und das dann nicht funktioniert.

    Hat jemand hierzu einen Tip?
    Bis dann
    Christof

    ioBroker admin 6 mit cloud in einer VM mit CCU2, Rademacher Homepilot, FS20, Homematic, Google Home

    1 Antwort Letzte Antwort
    0
    • Lenny.CBL Offline
      Lenny.CBL Offline
      Lenny.CB
      Most Active
      schrieb am zuletzt editiert von Lenny.CB
      #2

      @Christof-Kac sagte in [Frage] Telegram botSendMessageId von gesendeter Nachricht bestimmen:

      sendTo('telegram', {text: 'Test message'}, function (res) { log(getState("telegram.0.communicate.botSendMessageId").val); });

      versuche es mal so:

      sendTo('telegram.0', {text: 'Test message'}, function (res) {
          log(getState("telegram.0.communicate.botSendMessageId").val);
      });
      
      13:13:46.122	info	javascript.3 script.js.Testscripte.Skript1: 1899
      

      hatte wir neulich schon mal. sendTo('telegram oder sendTo('telegram.0
      bei mir gehts nur mit "0"

      1 Antwort Letzte Antwort
      0
      • Christof.KacC Offline
        Christof.KacC Offline
        Christof.Kac
        schrieb am zuletzt editiert von
        #3

        Hi,
        das hat geklappt, d.h. das "log" wird ausgeführt.
        Leider ist das Ergebnis die ID der vorherigen Botschaft, nicht der aktuellen.

        Das Callback scheint also nicht nach dem Senden der Botschaft ausgeführt werden.

        Noch eine Idee?
        Danke
        Christof

        ioBroker admin 6 mit cloud in einer VM mit CCU2, Rademacher Homepilot, FS20, Homematic, Google Home

        Lenny.CBL 1 Antwort Letzte Antwort
        0
        • Christof.KacC Christof.Kac

          Hi,
          das hat geklappt, d.h. das "log" wird ausgeführt.
          Leider ist das Ergebnis die ID der vorherigen Botschaft, nicht der aktuellen.

          Das Callback scheint also nicht nach dem Senden der Botschaft ausgeführt werden.

          Noch eine Idee?
          Danke
          Christof

          Lenny.CBL Offline
          Lenny.CBL Offline
          Lenny.CB
          Most Active
          schrieb am zuletzt editiert von Lenny.CB
          #4

          @Christof-Kac
          ah ok, ich denke das hat was mit sync und async Abfragen zutun. Da bin ich dann raus.
          Habe da auch nur die Idee mit dem TimeOut.

          1 Antwort Letzte Antwort
          0
          • Christof.KacC Offline
            Christof.KacC Offline
            Christof.Kac
            schrieb am zuletzt editiert von
            #5

            Hi,
            ich habe in der Zwischenzeit auch mal mit "async" und "await" gespielt.
            Leider bringt das auch nichts, da anscheinend nur gewartet wird, bis das "sendTo" abgerbeitet ist, nicht aber, bis die Telegram Botschaft versendet wurde.
            Gibt es noch eine andere Möglichkeit?
            Das Problem mit setTimeout ist, dass ich 5 verschiedene Botschaften per Telegram verschicke. Und die Lösung mit setTimeout ist dafür nicht zuverlässig genug.

            Danke im voraus
            Christof

            ioBroker admin 6 mit cloud in einer VM mit CCU2, Rademacher Homepilot, FS20, Homematic, Google Home

            Lenny.CBL 1 Antwort Letzte Antwort
            0
            • Christof.KacC Christof.Kac

              Hi,
              ich habe in der Zwischenzeit auch mal mit "async" und "await" gespielt.
              Leider bringt das auch nichts, da anscheinend nur gewartet wird, bis das "sendTo" abgerbeitet ist, nicht aber, bis die Telegram Botschaft versendet wurde.
              Gibt es noch eine andere Möglichkeit?
              Das Problem mit setTimeout ist, dass ich 5 verschiedene Botschaften per Telegram verschicke. Und die Lösung mit setTimeout ist dafür nicht zuverlässig genug.

              Danke im voraus
              Christof

              Lenny.CBL Offline
              Lenny.CBL Offline
              Lenny.CB
              Most Active
              schrieb am zuletzt editiert von
              #6

              @Christof-Kac
              bringt es was wenn du auf den Datenpunkt triggerst und den Wert wegschreibst?

              on({id: 'telegram.0.communicate.botSendMessageId', change: "ne"}, function (obj) {
                  log(obj.state.val);
                  setState('javascript.3.ID_1', obj.state.val)
              });
              
              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              394

              Online

              32.6k

              Benutzer

              82.2k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe