Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Telegram Menü dynamisch aus Aufzählung generieren.

    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

    Telegram Menü dynamisch aus Aufzählung generieren.

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

      Hi ,
      ich hab mal kleines Update eingeschoben,
      das Skript überarbeitet und versucht in ES6 umzugestalten.

      Desweiteren ist mir gelungen ein npm package zu erstellen
      mit der die Handhabung des Skriptes einfach sein sollte.

      man muss es einfach nur noch im ioBroker -Verzeichnis installieren mit:

      npm install mytelegrammenu
      

      alles weitere steht auf github.

      Außerdem werden jetzt unterschiedliche Telegram User vom Menü unterstützt.
      Verbesserungsvorschläge sind herzlich Willkommen !! 😉
      Viele Grüße

      AlCalzone 1 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @Nahasapee last edited by

        @Nahasapee

        Schöne Idee.
        Das mit dem Script habe ich noch nicht so ganz verstanden... Was muss hier wie in die letzte Zeile ?
        Ein "echtes" Beispiel wäre schön.

        let MyTelegramMenu = require('mytelegrammenu');
        let myEnumList =   ['functions','rooms'];
        let telegramMenu = new MyTelegramMenu(this,myEnumList);
        
        

        Installiert habe ich noch nichts, nur gelesen bisher...
        Gestartet wird mit menue ?
        Ich frage deshalb, weil ich ein recht umfangreiches und individuelles Telegram Menü habe, mit dem ich fast alles steuern kann und auch Zustände und Rückmeldungen bekomme.
        Mein Menü startet mit Menü, also mit ü, das dürfte sich dann ja nicht in die Quere kommen, oder ?

        N 1 Reply Last reply Reply Quote 0
        • N
          Nahasapee @dslraser last edited by

          @dslraser
          Hi, danke 🙂

          @dslraser sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

          Gestartet wird mit menue ?

          mein Menü tiggert mit:

          /menue 
          

          3eb29ac9-d310-468f-bd94-53cb51b0dfce-image.png

          @dslraser sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

          Das mit dem Script habe ich noch nicht so ganz verstanden... Was muss hier wie in die letzte Zeile ?
          Ein "echtes" Beispiel wäre schön.

          Das ist mein "echtes" Beispiel, genauso habe ich es gerade bei mir im Broker, du müsstest lediglich die Liste in der zweiten Zeile anpassen, wenn das Menü aus einer anderen Aufzählung generiert werden soll.

          Zum besseren Verständnis bei mir gibt es zur Zeit 5 Aufzählungslisten:

          • Funktion
          • Erdgeschoss
          • Obergeschoss
          • Customs
          • TV
            75d4bbc8-b937-4e7a-8a35-91bb0c560bf0-image.png

          wenn ich jetzt aus allen 5 mein Menü generieren wollte
          müssten alle 5 Namen rein

          let myEnumList =   ['functions','rooms','obergeschoss','customs'];
          

          Die Namen die in die Liste müssen, findet man unter Objekte im ioBroker, unter Aufzählung zeigt er nur die Übersetzung an:

          b749c16d-6ee6-475a-920b-be0a2bcf74ab-image.png

          Alle SubMenüs werden dann aus den entsprechenden Unterpositionen generiert.

          @dslraser sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

          Ich frage deshalb, weil ich ein recht umfangreiches und individuelles Telegram Menü habe, mit dem ich fast alles steuern kann und auch Zustände und Rückmeldungen bekomme.

          Rückmeldungen gibt mein Menü leider noch nicht, es setzt nur "stumpf" die Taster.
          Einen Rückmeldemodus werde ich aber bei Gelegenheit ergänzen, da ich gern meine Fensterkontakte abfragen möchte.

          @dslraser sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

          Mein Menü startet mit Menü, also mit ü, das dürfte sich dann ja nicht in die Quere kommen, oder ?

          ich glaub jetzt zwar nicht, aber falls du es testen solltest vielleicht lieber doch das andere Script von deinen Menü temporär deaktivieren.
          Viele Grüße

          1 Reply Last reply Reply Quote 0
          • N
            Nahasapee last edited by

            Hi,
            ich habe mal ein kleines Update eingespielt.

            • paar kleine Fehler wurden behoben
            • die untere Navigationsleiste hat neue Icons bekommen
              e282ffb9-53aa-455d-b7e1-b281dd1fbb38-image.png
            • Konfigurationsmöglichkeiten hinzugefügt
              • Sprache(DE,EN)
              • welche Auswahllisten verwendet werden sollen
              • welche Telegraminstanz im IoBroker verwendet werden soll
              • soll das Menü über Telegramm Rückmeldung geben, ob ein State geschaltet wurde
              • desweiteren sind die Anzahl an Köpfe in Spalte/Zeile steuerbar
              • z.b. 2x3 : 5c286e19-24e8-43cb-aba6-736fc06062cb-image.png
              • z.b. 3x2 00795a06-b2d4-4683-9403-6b6a7fa4d503-image.png
            • boolesche States werden unterstützt (Switch und Buttons)
            • Nummerische States können gesteuert werden z.B. Rollopositionen
            • falls states schreibgeschützt sind, erfolgt eine Ausgabe des momentanen Wertes

            Hier mal eine kleine Animation vom Menü und Navigation

            • iobrokerTelegramMenu2.gif

            Das wars erst mal Viele Grüße 🙂

            1 Reply Last reply Reply Quote 1
            • N
              Nahasapee last edited by

              Hi ,
              hier noch mal kleines HowTo Video, wie man neue Räume ins Menü einfügt.

              Viele Grüße

              addEnumsAndTest.gif

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer @Nahasapee last edited by

                @Nahasapee sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                man muss es einfach nur noch im ioBroker -Verzeichnis installieren mit:
                npm install mytelegrammenu

                alles weitere steht auf github.

                Besser ist es, das Paket stattdessen in den Einstellungen des Skript-Adapters als zusätzliches Modul zu vermerken. Damit geht man sicher, dass es bei Upgrades etc. nicht verloren geht und auch nach Restore von Backups immer wieder installiert wird.

                N 1 Reply Last reply Reply Quote 0
                • N
                  Nahasapee @AlCalzone last edited by

                  @AlCalzone vielen Dank für den Hinweis, ich hab es angepasst.

                  Ich hab kleines Update eingeschoben man kann nun
                  einen Report erstellen über die momentanen Zustände der gesamten Schalter im Menüpunkt.

                  createReport2.gif

                  BBTown 1 Reply Last reply Reply Quote 0
                  • BBTown
                    BBTown @Nahasapee last edited by

                    @Nahasapee
                    erst einmal vielen Dank für das Teilen deines Scriptes und vor allem für deine sehr, sehr anschauliche Beschreibung.

                    Allerdings, obgleich ich mich an Deine Anleitung gehalten habe scheint irgendwo ein Schritt zu fehlen?!

                    Wenn ich in telegram "/menu" eingebe, dann erhalte ich anstelle des erwarteten Menus die Meldung:
                    "Ich verstehe "#menu" nicht"

                    Anbei mein Script

                    const MyTelegramMenu = require('mytelegrammenu');                         
                    const options = {
                                    'enumList': ['rooms','functions'],                                  
                                    'locale':'de',
                                    'telegramInstance': 'telegram.0',
                                    'feedbackToTelegram': true,
                                    'MenuRows': 3,
                                    'MenuCols': 2
                                     }
                    const telegramMenu = new MyTelegramMenu(this,options);
                    

                    Wo liegt mein Fehler?

                    N FredF 2 Replies Last reply Reply Quote 0
                    • N
                      Nahasapee @BBTown last edited by

                      @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                      "Ich verstehe "#menu" nicht"

                      Hi, BBTown
                      also das kommt nicht von meinem Skript, wenn da was reinkommt was es nicht versteht
                      ignoriert es das normalerweise.
                      Vermutlich Anwortet nur irgendein anderes Skript auf den Befehl (vielleicht text2command) oder sowas
                      und klappt so das Menü wieder ein?

                      Ist es eventuell unten da?

                      379afd38-7fe0-4c25-9648-9fdac929b53a-image.png

                      Das Einrichten vom Bot und den Telegramadapter hast du aber hinbekommen?(botfather ect.)
                      ->https://nodei.co/npm/iobroker.telegram/

                      PS. was steht im log?

                      Viele Grüße

                      BBTown 1 Reply Last reply Reply Quote 0
                      • BBTown
                        BBTown @Nahasapee last edited by BBTown

                        @Nahasapee
                        Ja, einen Bot habe ich und ich habe auch bereits mit eigenen Menus und Buttons herumgespielt.

                        Kann es sein, dass der Punkt bzw. ein Script fehlt um das ganze überhaupt in meinen Bot zu schicken?
                        Wo wird denn z.B. definiert, dass der Aufruf mit "/menu" erfolgt und nicht bspw. mit "Enums" oder mit "BBTown"?

                        [Nachtrag]
                        braucht es nicht noch ggf. etwas in diese Richtung?

                        sendTo('telegram.0', {
                            text:   'Press button',
                            reply_markup: {
                                keyboard: [
                                    ['Line 1, Button 1', 'Line 1, Button 2'],
                                    ['Line 2, Button 3', 'Line 2, Button 4']
                                ],
                                resize_keyboard:   true,
                                one_time_keyboard: true
                            }
                        });
                        
                        N 2 Replies Last reply Reply Quote 0
                        • N
                          Nahasapee @BBTown last edited by

                          @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                          Wo wird denn z.B. definiert, dass der Aufruf mit "/menu" erfolgt

                          das macht das Package im "Hintergrund" 😉
                          wenn du es genau wissen willst hier:

                          https://github.com/Nahasapeemapetilon/MyTelegramMenu/blob/dbf3aa854234b7236949942976bae0ec7d65e01b/lib/mytelegrammenu.js#L35

                          ist das npm package korrekt installiert und was sagt das log wenn du das Script ausführst ?

                          BBTown 1 Reply Last reply Reply Quote 0
                          • BBTown
                            BBTown @Nahasapee last edited by

                            @Nahasapee sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                            ist das npm package korrekt installiert

                            meinst Du das hier?
                            8ba76e4d-fd3b-4d6f-bc9f-f8b995dc76ff-grafik.png

                            N 1 Reply Last reply Reply Quote 0
                            • N
                              Nahasapee @BBTown last edited by

                              @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                              braucht es nicht noch ggf. etwas in diese Richtung?

                              nein macht alles das Skript im Hintergrund

                              BBTown 1 Reply Last reply Reply Quote 0
                              • FredF
                                FredF Most Active Forum Testing @BBTown last edited by

                                @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                "Ich verstehe "#menu" nicht"

                                Ich verhindere das indem ich im text2command den namen angebe.
                                Tanken z.B.
                                4254d05c-6cf8-49e3-80b7-d6e62c27a075-grafik.png

                                BBTown 1 Reply Last reply Reply Quote 0
                                • N
                                  Nahasapee @BBTown last edited by

                                  @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                  meinst Du das hier?

                                  ja,

                                  ich hab es aber bei mir manuell installiert und nicht geprüft, ob das mit der automatischen installation klappt...test ich gleich mal

                                  text2command hab ich bei mir leider auch nicht laufen und kenne mich da jetzt nicht sonderlich aus.

                                  aber gucke ich auch gleich noch mal rein.

                                  nichtsdestotrotz wäre mal nen log ganz gut was er bei dir sagt
                                  😉

                                  BBTown 1 Reply Last reply Reply Quote 0
                                  • BBTown
                                    BBTown @Nahasapee last edited by BBTown

                                    @Nahasapee
                                    so, ich bin einen halben Schritt weiter.
                                    Ich Depp habe die ganze Zeit "/menu" und nicht "/menue" getippt.

                                    Nun bekomme ich die Rückmeldung: "Bitte wählen:"
                                    und habe folgende Fehler im Log

                                    
                                    javascript.0	2019-07-20 20:58:46.540	warn	Object "enum.functions" does not exist
                                    javascript.0	2019-07-20 20:58:46.540	warn	Object "enum.rooms" does not exist
                                    javascript.0	2019-07-20 20:58:14.007	warn	Object "enum.functions" does not exist
                                    javascript.0	2019-07-20 20:58:14.007	warn	Object "enum.rooms" does not exist
                                    javascript.0	2019-07-20 20:57:26.317	warn	Object "enum.functions" does not exist
                                    javascript.0	2019-07-20 20:57:26.317	warn	Object "enum.rooms" does not exist
                                    javascript.0	2019-07-20 20:57:03.402	warn	Object "enum.functions" does not exist
                                    javascript.0	2019-07-20 20:57:03.401	warn	Object "enum.rooms" does not exist
                                    javascript.0	2019-07-20 20:55:37.221	warn	Object "enum.functions" does not exist
                                    javascript.0	2019-07-20 20:55:37.221	warn	Object "enum.rooms" does not exist
                                    

                                    026bc98e-95d1-4195-aa9e-1ef8981a13b8-grafik.png

                                    2745ff38-70b5-4087-abee-fce318fba742-grafik.png

                                    1 Reply Last reply Reply Quote 0
                                    • BBTown
                                      BBTown @FredF last edited by

                                      @FredF sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                      @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                      "Ich verstehe "#menu" nicht"

                                      Ich verhindere das indem ich im text2command den namen angebe.
                                      Tanken z.B.
                                      4254d05c-6cf8-49e3-80b7-d6e62c27a075-grafik.png

                                      tztztz ... soll man denn auf "scriptEnabled" verweisen?? 🤓

                                      1 Reply Last reply Reply Quote 0
                                      • BBTown
                                        BBTown @Nahasapee last edited by

                                        @Nahasapee sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                        ich hab es aber bei mir manuell installiert

                                        falls Du das hier meinst

                                        npm install mytelegrammenu
                                        

                                        das habe ich auch durchgeführt

                                        1 Reply Last reply Reply Quote 0
                                        • N
                                          Nahasapee last edited by Nahasapee

                                          @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                          Ich Depp habe die ganze Zeit "/menu" und nicht "/menue" getippt.

                                          das sollte ich vielleicht mal ändern zu /menü

                                          starte mal deine Javascript instanz neu, bisschen merkwürdig,dass er deine Auflistung nicht kennt
                                          f2895aae-c8a4-486f-b474-2dbee8a14344-image.png

                                          Deine Auflistungen sind ja schön prall gefüllt, da freu ich mich schon auf nen test, wenn es läuft 🙂

                                          BBTown 1 Reply Last reply Reply Quote 0
                                          • BBTown
                                            BBTown @Nahasapee last edited by BBTown

                                            @Nahasapee sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                            starte mal deine Javascript instanz neu, bisschen merkwürdig,dass er deine Auflistung nicht kennt

                                            brachte noch keine Änderung.
                                            Ich werde mal eine neue Aufzählung anlegen, das hast Du ja auch gemacht.
                                            Vielleicht reagiert das Script dann anders.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            872
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            7
                                            48
                                            4120
                                            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