Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Telegram inline-keyboard ohne Text2Command

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Telegram inline-keyboard ohne Text2Command

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

      Meine eigentliche Frage findet sich weiter unten im Spoiler, die habe ich mir selbst beantwortet.
      In diesem Thread werde ich nun einfach meine Erfahrungen und Fortschritte mit dem Inline-Keyboard ohne Nutzung von Text2Command posten und beschreiben. Wenn ihr Fragen habt, immer los!

      GIF in Aktion


      ~~Moin zusammen,

      sagtmal, hat jemand von euch schon erfolgreich mit Blockly ein inline-keyboard realisiert?
      Ich meine nicht das klassische Menü, was über Buttons funktioniert und dann den ganzen Chat vollspamt, sondern ein inline-keyboard-menü mit Nachrichten, sie sich quasi selbst bearbeiten.

      Telegram unterstützt die Mechanik, ich werde nur aus sämtlichen Dokus nicht schlau. Ich nutze kein Text2command, was dem aber eigentlich kein Abbruch tun sollte. Ich bin soweit, dass das inline-keyboard wunderbar klappt, ich bekomme es aber einfach nicht hin, dass das Menü nicht als neue Nachricht geschickt wird sondern eben das vorige Menü "inline" ersetzt, die Nachricht also entsprechend bearbeitet wird.

      Ich würde es gerne über blockly lösen, da mir tiefgehende JS-Kenntnisse fehlen. Hab mein Blockly mal exportiert, vielleicht hilfts einem. Ansonsten auch als JS aus der debug-ansicht:
      blockly.txt
      javascript.txt

      Vielleicht kann mir ja jemand den entscheidenden Tipp geben an welcher Stelle ich am besten wie einbaue, dass das Menü neu aufgebaut wird! Danke :)~~

      M 1 Reply Last reply Reply Quote 0
      • M
        MCU @Joshude last edited by

        @Joshude https://forum.iobroker.net/topic/21644/vorlage-telegram-menü-ohne-text2command/96

        J 1 Reply Last reply Reply Quote -1
        • J
          Joshude @MCU last edited by

          @MCU Ich weiß jetzt leider nicht, was mir der direkt von dir verlinkte Post sagen soll?! Bisschen mehr Text als nur ein Link wäre schon enorm hilfreich.

          Aber ich glaube ich habe es inzwischen selbst gelöst, zumindest sofern "unter der Haube" auch alles so ist wie es eigentlich sein soll.
          Mein Gedanke war, dass man nach Aufruf des Menüs eine Funktion aufrufen muss, die einem den vergangenen Text bearbeitet. Das ist aber quark, das macht man direkt bei Aufruf des Menüs.
          Also statt bei Aufruf des Menüs eine neue Nachricht zu schicken wir die bestehende Nachricht einfach bearbeitet. Dann klappts auch mit dem Nachbarn.

          Ganz Konkret:

          Das sind praktisch die Aufrufe der aktuell bestehenden Menüs:
          884b611d-a8b5-4753-9a66-ff45727da989-image.png

          Das "Startmenü" ist ganz klassisch eine geschickte Nachricht von Telegram ohne vorher was zu bearbeiten. Damit geht es quasi los ohne, dass man sich eine Nachricht von davor überschreibt:

          sendTo('telegram.0', {
                  chatId: getState("telegram.0.communicate.requestChatId").val,
                  text: "Aktion wählen",
                  reply_markup: {
                      inline_keyboard: [
                          [{ text: 'Licht', callback_data: 'menu_licht' }],
                          [{ text: 'Strom', callback_data: 'menu_strom' }],
                          [{ text: 'Heizung', callback_data: 'menu_heizung' }],
                          [{ text: 'Status', callback_data: 'menu_status' }]
                      ],
                      resize_keyboard:   true,
                      one_time_keyboard: false
                  }
              });
          

          Und die anderen Menüs sind nach dem Schema aufgebaut:

          sendTo('telegram.0', {
                  chatId: getState("telegram.0.communicate.botSendChatId").val,
                  text: 'Hauptmenü',
                  editMessageText: {
                      options: {
                          chat_id: getState("telegram.0.communicate.requestChatId").val,
                          message_id: last_message_id,
                          reply_markup: {
                              inline_keyboard: [
                                  [{ text: 'Licht', callback_data: 'menu_licht' }],
                                  [{ text: 'Strom', callback_data: 'menu_strom' }],
                                  [{ text: 'Heizung', callback_data: 'menu_heizung' }],
                                  [{ text: 'Status', callback_data: 'menu_status' }]
                              ],
                          }
                      }
                  }
              });
          

          Hier sieht man auch schön den Vergleich wie ein Menü aussieht, was erstellt wird (das erste) und einem Menü, bei dem das vorhige ersetzt wird (das zweite).
          Das sieht dann so aus:
          GIF in Aktion

          B 1 Reply Last reply Reply Quote 0
          • B
            bishop @Joshude last edited by

            @Joshude
            könntest du das mal bitte als export anbieten?
            Also das komplette Blockly damit ich das auf meine sachen umbauen kann.
            Ich bekomme das nicht hin, es werden mir keine Nachrichten an Telegram geschickt.
            Habe versucht, dass nach zu bauen..

            J 1 Reply Last reply Reply Quote 0
            • J
              Joshude @bishop last edited by

              @bishop
              Klar, hier:
              telegraminline.txt

              Ist allerdings noch nicht 100%ig fertig. Sprich die Grundzüge gehen, es sind aber noch nicht alle Menüs und alle Grundfunktionen auf inline umgebaut.
              Was geht ist das Hauptmenü und der Aufruf der Untermenüs Strom und Licht. Heizung und Status ist noch ohne Funktion.
              Innerhalb der Menüs gibts beim Licht noch ein Untermenü "Wohnzimmer", was auch teilweise geht.

              Ich kann das Script gerne updaten, wenn ich weiter dran gebaut habe und es vollständig ist.

              Mir gefällt das mit dem inline-Menü jedenfalls wesentlich besser als das Menü mit den normalen Buttons, da der Chat nicht so vollgespammt wird.

              B 1 Reply Last reply Reply Quote 0
              • B
                bishop @Joshude last edited by

                @Joshude
                vielen dank, werde mir das mal anschauen!

                J 1 Reply Last reply Reply Quote 1
                • J
                  Joshude @bishop last edited by

                  @bishop Hier mal meine aktuelle Version, wo zumindest alle Menüs was tun sollten und eigentlich auch alle Funktionen gehen sollten, wenn ich nichts übersehen habe. Jeweils mit den benötigten callback-aufrufen, damit das Menü auch vernünftig funktioniert. Hier wird dann auch der Text definiert, der als Antwort kommen soll, alternativ gibt es callback-aufrufe, die ohne Text auskommen. Sollte eigentlich alles recht selbsterklärend sein, wenn mans erstmal vor sich hat

                  telegraminline.txt

                  M 1 Reply Last reply Reply Quote 1
                  • M
                    michael_4358 @Joshude last edited by

                    @Joshude
                    grandios!

                    hast du das alles mit blockly gemacht ode rgibt es auch ein anderes programm?

                    J 1 Reply Last reply Reply Quote 0
                    • J
                      Joshude @michael_4358 last edited by

                      @michael_4358
                      danke dir! Das ist alles in Blockly entstanden, allerdings sind die meisten Funktionen innerhalb des Blocklys direkt JavaScript-Funktionen. Gibt noch ein paar blockly-Funktionen, die werde ich allerdings auch noch zu Javascript umbauen.

                      1 Reply Last reply Reply Quote 1
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      716
                      Online

                      31.7k
                      Users

                      79.7k
                      Topics

                      1.3m
                      Posts

                      4
                      9
                      1097
                      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