Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] Telegram botSendMessageId von gesendeter Nachricht bestimmen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Frage] Telegram botSendMessageId von gesendeter Nachricht bestimmen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Christof.Kac
      Christof.Kac last edited by

      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

      1 Reply Last reply Reply Quote 0
      • Lenny.CB
        Lenny.CB Most Active last edited by Lenny.CB

        @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 Reply Last reply Reply Quote 0
        • Christof.Kac
          Christof.Kac last edited by

          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.CB 1 Reply Last reply Reply Quote 0
          • Lenny.CB
            Lenny.CB Most Active @Christof.Kac last edited by Lenny.CB

            @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 Reply Last reply Reply Quote 0
            • Christof.Kac
              Christof.Kac last edited by

              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.CB 1 Reply Last reply Reply Quote 0
              • Lenny.CB
                Lenny.CB Most Active @Christof.Kac last edited by

                @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 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                428
                Online

                31.9k
                Users

                80.2k
                Topics

                1.3m
                Posts

                javascript
                2
                6
                359
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo