MiRo1310 / ioBroker.telegram-menu

Easily create Telegram Menus
MIT License
14 stars 5 forks source link

Cannot read properties of undefined #120

Closed tobi-nmx closed 7 months ago

tobi-nmx commented 7 months ago

Describe the bug
Version 1.6.2 funktioniert bei mir nicht (ältere Versionen funktionieren prima). Es wird nichts an Telegram gesendet, dafür steht im Log ein Fehler (siehe unten).

To Reproduce
Steps to reproduce the behavior:

  1. Upgrade Telegram-menu von 1.6.1 zu 1.6.2
  2. Funktioniert nicht mehr

Expected behavior
Dass die aktuelle Version auch bei mir funktioniert.

Screenshots & Logfiles
telegram.0
2024-02-08 10:15:06.406 error Failed sending [chatId - 209703855]: Error: ETELEGRAM: 400 Bad Request: message text is empty
telegram-menu.0 2024-02-08 10:15:06.133 error "TypeError: Cannot read properties of undefined (reading 'includes')\n at checkStatusInfo (/opt/iobroker/node_modules/iobroker.telegram-menu/lib/js/utilities.js:48:16)\n at async sendNav (/opt/iobroker/node_modules/iobroker.telegram-menu/lib/js/sendNav.js:8:16)"
telegram-menu.0 2024-02-08 10:15:06.132 error Error checkStatusInfo: "Cannot read properties of undefined (reading 'includes')"

Versions:

Additional context
Sag Bescheid, wenn du meine Konfiguration brauchst (wie kann ich die exportieren?). Danke!

MiRo1310 commented 7 months ago

Installiere mal direkt über die Katze und hole die neusten Änderungen von Github

MiRo1310 commented 7 months ago

Egal was du ausführst wird? Es wird absolut nichts an Telegram geschickt?

tobi-nmx commented 7 months ago

Danke für's Anschauen! Hab's gerade mit der neusten Version von Gitgub getestet: Es wird nur etwas an Telegram geschickt, wenn der "Text" der Navigation keine Variablen enthält. Ich vermute jetzt, dass ich die Variablen im Text nicht richtig nutze. Bisher hatte ich diese Syntax verwendet: "{status:alias.0.Räume.Büro.Fenster}", was in 1.6.1 auch prima funktioniert hat. Meine Vermutung: Jetzt landet mein Objektname wohl in "id" und "ID" ist leer. Was gehört denn in "id"? Hab in der Doku leider kein Beispiel gefunden. "{status:id:alias.0.Räume.Büro.Fenster:false}"?

tobi-nmx commented 7 months ago

{status:alias.0.Räume.Büro.Fenster::true} funktioniert (wenn es nicht mindestens 4 Parameter sind, dann nicht).

MiRo1310 commented 7 months ago

Ich schaue mir das heute Abend an. Ist auf jeden Fall ein Breaking change drin.

tobi-nmx commented 7 months ago

Vielen Dank! Ja, hatte ich gesehen. Allerdings hatte ich das so (d.h. falsch) verstanden, dass das nur Auswirkungen hat, wie die "change()" Funktion angewendet wird. Außerdem geht aus der Doku nicht hervor, was bei {status:'id':'ID':true} denn das kleine 'id' bedeutet. Laut meinen Tests scheint die kleine "id" die ObjectID zu sein und die große "ID" (laut Doku die "abzufragende ID") kann man leer lassen.

MiRo1310 commented 7 months ago

Kannst du mal ein Beispiel schreiben, was nicht funktioniert? man kann das id: einfach weg lassen, einfach so {status:'0_userdata.0.boolean'} oder so {status:'0_userdata.0.boolean':true} oder halt {status:'0_userdata.0.boolean':false} wenn ein change diesen Wert nicht ändern darf. Ich habe auch den Fehler im Code gefunden. Lade den jetzt hoch, dann bitte noch einmal ausprobieren

tobi-nmx commented 7 months ago

Wenn ich die ID weglasse, gibt es eben die genannte Fehlermeldung und es kommt nichts bei Telegram an. Hab jetzt gerade (21:08) nochmal über Github aktualisiert, leider keine Änderung. Funktioniert nicht: {status:'alias.0.Räume.OG.Treppe_OG_Licht':} Funktioniert nicht: {status:alias.0.Räume.OG.Treppe_OG_Licht} Funktioniert: {status:alias.0.Räume.OG.Treppe_OG_Licht:} Funktioniert: {status:alias.0.Räume.OG.Treppe_OG_Licht:true}

MiRo1310 commented 7 months ago

Und wenn du beim ersten entweder ein true zwischen die :: packst ? Bei dem 2. fehlen die ''um die id so wie das erste nur ohne die ::

tobi-nmx commented 7 months ago

Ich hab gesehen, dass du die ID aus der Doku entfernt hast. Daher hab ich meinen Post editiert. Jetzt weiß ich nicht mehr was das 2. war.... sorry. Mit '' um die ID funktioniert es nicht, ohne schon.

MiRo1310 commented 7 months ago

Ich schaue morgen noch mal

MiRo1310 commented 7 months ago

{status:'0_userdata.0.boolean':} funktioniert bei mir {status:0_userdata.0.boolean:} funktioniert bei mir {status:0_userdata.0.boolean} funktioniert ab jetzt

Ich denke damit ist das abgeschlossen, oder? Ansonsten gerne noch mal melden

tobi-nmx commented 7 months ago

Ich hab jetzt nochmal über Github aktualisiert. Leider funktioniert {status:0_userdata.0.example_state} bei mir nicht (Status: {status:0_userdata.0.example_state:} schon). Wäre es sinnvoll an der Stelle eine Fehlerbehandlung einzubauen, dass man sieht wenn/wo das Parsen nicht klappt? Ich bekomm nur die lange Fehlermeldung vom 1. Posting.

MiRo1310 commented 7 months ago

Ja macht Sinn. Baue ich ein.