Also, nachdem ich ein bisschen herumgepfuscht habe, um die Berechtigungen der Datei zu ändern, damit ich sie über FTP-Transfer aktualisieren konnte, konnte ich die Benutzer-ID in
gladys-production.db
aktualisieren. Ich starte Gladys neu und aktualisiere damit das Token. Und hier wird es interessant: Ich versuche erneut, die Verbindung zu Telegram herzustellen, und zack, es funktioniert immer noch nicht! Ich überprüfe die ID erneut in der Datenbank und siehe da, wieder ein .0. Als ob es sich beim Generieren des Links hinzufügt. Also erstelle ich das GitHub-Issue. (Zumindest versuche ich es ) Danke
Mist! Das wird wohl debuggt werden müssen, aber das wird sehr kompliziert, weil es ein Bug ist, der nur mit deinem Konto aufgrund deiner Benutzerkennung auftritt…
Hast du Erfahrung mit Node.js-Entwicklung oder gar keine?
Wir verwenden diese Bibliothek in Gladys:
Es würde mich nicht wundern, wenn der Cast auf ihrer Seite beim Parsen der von der Telegram-API zurückgegebenen Daten erfolgt, also müssen wir einen Code-Snippet schreiben, der nur den Code der Bibliothek testet?
Hallo!
Danke für diesen Thread, ich habe genau das gleiche Problem wie oben beschrieben… ich habe die gleichen Überprüfungen durchgeführt, und bingo! Mein Benutzername hat ebenfalls ein .0 am Ende
Verrückt, das bestätigt das Problem! Danke für dein Feedback @Christophe_LOCHON
Hast du irgendwelche technischen Fähigkeiten, um uns zu helfen, die Ursache des Problems zu finden? Das Problem ist, dass ich keinen Telegram-Account mit einer problematischen ID (die auf 0 endet) habe, sodass ich das Problem nicht bei mir reproduzieren kann.
Hallo @pierre-gilles! Abgesehen davon, dass ich Ihnen Logs bereitstellen kann, habe ich leider nur wenig Kenntnisse in den Bereichen der Programmierung…
Hallo,
Zuerst einmal vielen Dank an @Christophe_LOCHON, das bestätigt den Bug
Ansonsten muss ich ehrlich sagen, dass ich beim Debuggen nicht wirklich weitergekommen bin, weil ich nicht genau weiß, wie ich vorgehen soll.
Wenn ich das richtig verstanden habe, wird beim Eingeben des API-Schlüssels in Gladys ein Aufruf an Telegram gemacht, der den Schlüssel parst, bestätigt, dass er gültig ist, und die zugehörige Benutzer-ID zurückgibt (oder ableitet).
Bei der Initialisierung wird diese Benutzer-ID in der Gladys-Datenbank gespeichert.
Sie wird anschließend verwendet, um die Verbindung zwischen Telegram und Gladys herzustellen.
Für mich gibt es zwei Probleme:
1/ Bei der Initialisierung wird die Benutzer-ID (oder zumindest gespeichert) mit einer .0 am Ende zurückgegeben
Man stellt auch fest, dass selbst wenn man in der Datenbank die .0 am Ende der ID löscht und einen erneuten Verbindungsversuch mit Telegram durchführt, die ID erneut mit einer .0 geändert wird.
Daher das Problem 2:
2/ Die Telegram-Benutzer-ID wird bei jedem Austausch gespeichert, anstatt einfach eine « Übereinstimmung » mit der in der Datenbank verfügbaren ID herzustellen…
Jetzt weiß ich nicht, wie ich diese Austausche « überwachen » soll, um all das zu bestätigen und herauszufinden, woher das Problem kommt.
@Mazshaka Eigentlich vermute ich, dass die Bibliothek, die wir verwenden, sich beim Parsen der Antwort der Telegram-API irrt, denn die Bibliothek gibt bereits eine JavaScript-„Number“ zurück.
const TelegramBot = require('node-telegram-bot-api');
// ersetze den Wert unten mit dem Telegram-Token, den du von @BotFather erhältst
const token = 'YOUR_TELEGRAM_BOT_TOKEN';
// Erstelle einen Bot, der 'polling' verwendet, um neue Updates abzurufen
const bot = new TelegramBot(token, {polling: true});
// Höre auf jede Art von Nachricht. Es gibt verschiedene Arten von
// Nachrichten.
bot.on('message', (msg) => {
const chatId = msg.chat.id;
console.log(msg);
});
Du müsstest diesen Code-Snippet auf deinem Rechner ausführen und dann eine Nachricht an den Bot mit deinem Benutzer senden.
Andernfalls besteht die Möglichkeit, dass du mir deinen API-Schlüssel (privat, von einem Test-Bot, der für den Test erstellt wurde) schickst und ich den Test auf meinem Rechner durchführe, aber das bedeutet, dass du zum Zeitpunkt des Tests vor deinem Telefon sein musst, um eine Nachricht senden zu können
Danke @pierre-gilles!
Jetzt ist es klarer. Ich schaue mir das am Wochenende an und halte dich auf dem Laufenden.
Im schlimmsten Fall können wir uns immer noch für Tests koordinieren, falls ich stecken bleibe.
Guten Tag
Betreff: Hallo,
Ich brauche ein bisschen Hilfe.
Ich weiß nicht, wo ich die .js-Datei ablegen soll.
Soweit ich weiß, verwendet Gladys URL-Routen, um auf die Datei zuzugreifen.
Daher weiß ich nicht, wo ich die Datei ablegen soll, um darauf zuzugreifen.
Oder kann ich sie über einen Befehl starten?
Aber da bin ich mir auch nicht sicher…
Also, wenn ihr mich da bitte führen könntet
Danke!
Beste Grüße,
Lionel
Hallo @pierre-gilles,
Um vollständig zu sein, habe ich tatsächlich daran gedacht, das Raspberry Pi-Skript zu starten. Ich habe verstanden, dass es so nicht funktioniert. Dennoch habe ich Node.js auf der Instanz installiert, um npm-Befehle ausführen zu können. Aber ich weiß nicht, ob das nützlich und/oder ausreichend ist?
Ich gebe zu, dass ich ab diesem Punkt ohne eine intensivere Hilfe nicht weiterkommen würde… zum Beispiel Schritt für Schritt
Oder ein Link zu einem Tutorial?
Ansonsten kann ich dir immer noch meinen API-Schlüssel schicken, damit du es testen kannst.
Danke
Ich habe heute Morgen an dem Bug gearbeitet. Ich habe die Ursache des Bugs auf der Seite von Gladys isoliert. Tatsächlich haben wir die ID als Number in JS erhalten, aber das Casting in einen String für die DB wurde automatisch von Sequelize durchgeführt, und ich denke, es dachte, unsere Number sei ein Float.
Indem wir das Casting selbst im Telegram-Service mit einem .toString() durchgeführt haben, ist der Bug nicht mehr vorhanden.
Ich habe eine ganze Batterie von Tests geschrieben, um sicherzustellen, dass das Problem nicht wieder auftritt.
Der Fix ist in diesem PR:
Danke an alle, die sich die Zeit genommen haben, mir die richtigen Informationen zu geben. Es ist ein quite lustiger Bug, weil er nur 10% der Nutzer betroffen hat, da das Casting diesen Wert nur als Float zu interpretieren scheint, wenn Ihre Telegram-ID auf eine 9 endet! Eine Chance von 1 zu 10 also