Bon alors, après avoir un peu galérer pour changer les droits sur le fichier afin de le mettre à jour via transfert FTP j’ai pu mettre à jour l’user id dans
gladys-production.db
Je relance gladys et du coup je mets à jour le token.
Et c’est là que ça devient intéressant : je refais le lien avec Telegram et bim ça ne marche toujours pas !
Je vérifie à nouveau l’ID dans la db et là, surprise, à nouveau le .0
Comme si il s’ajoutait au moment de la génération du lien.
Du coup je créé l’issue github. (Du moins j’essaie )
Merci
Mince ! Il va falloir débugger ça, par contre ça va être très compliqué parce que c’est un bug qui n’arrive qu’avec ton compte du fait de ton identifiant…
Tu as des compétences en développement Node.js ou pas du tout ?
On utilise cette librairie dans Gladys:
Je ne serais pas étonné que le cast se passe de leur côté lors du parsing de la data retourné par l’API de Telegram, donc il va falloir faire un bout de code qui test uniquement le code de la lib ?
Bonjour !
Merci pour ce thread, j’ai exactement le même problème que celui décrit ci-dessus… j’ai fait les mêmes vérifications, et bingo ! Mon userid a également un .0 à la fin
Est-ce que tu as quelque compétences technique pour nous aider à voir d’où vient le problème ? Le souci c’est que n’ayant pas de compte Telegram avec un id qui pose problème (finissant par 0), je n’arrive pas à reproduire le souci chez moi
Bonjour,
D’abord merci à @Christophe_LOCHON ça confirme le bug
Pour le reste à vrai dire je n’ai pas vraiment avancé dans le debug car je ne sais pas vraiment comment m’y prendre.
Si j’ai bien compris le fonctionnement, lorsque l’on saisie la clé API dans Gladys il y a un appel vers Telegram qui parse la clé, confirme qu’elle est valide et retourne (ou déduit) l’user ID associé.
Lors de l’initialisation cet user ID est enregistré en BDD dans Gladys.
Il est ensuite utilisé pour faire le lien lors des échanges Telegram/Gladys.
Pour moi il y a 2 problèmes:
1/ lors de l’initialisation l’user ID est renvoyé (ou du moins enregistré) avec un .0 à la fin
On constate également que même si on supprimer en BDD le .0 à la fin de l’ID et que l’on refait un test de connexion avec Telegram, l’ID est ensuite à nouveau modifier avec un .0.
d’ou le problème 2:
2/ L’ ID Telegram est enregistré lors de chaque échange au lieu de faire un simple “match” avec celui disponible en BDD…
Maintenant je ne sais pas comment “monitorer” ces échanges pour confirmer tout ça et trouver d’où vient le problème.
@Mazshaka En fait je suspecte la librairie qu’on utilise de se tromper lors du parsing du retour de l’API Telegram, car la lib retourne déjà un “Number” Javascript.
const TelegramBot = require('node-telegram-bot-api');
// replace the value below with the Telegram token you receive from @BotFather
const token = 'YOUR_TELEGRAM_BOT_TOKEN';
// Create a bot that uses 'polling' to fetch new updates
const bot = new TelegramBot(token, {polling: true});
// Listen for any kind of message. There are different kinds of
// messages.
bot.on('message', (msg) => {
const chatId = msg.chat.id;
console.log(msg);
});
Il faudrait que tu exécute ce bout de code sur ta machine, puis que tu envoie un message au bot avec ton user.
Sinon, une autre possibilité c’est que tu m’envoie ta clé d’API (en privée, d’un bot bidon créé pour le test) et que je fasse le test sur ma machine, mais ça implique que tu sois devant ton téléphone au moment ou je fais le test pour pouvoir envoyer un message
Merci @pierre-gilles !
Du coup c’est plus claire. Je regarde ça ce week-end et je vois tiens au courant.
Au pire on pourra toujours arriver à se coordonner pour des tests si je bloque.
Bonne journée
Re,
J’ai besoin d’un petit coup de main.
Je ne sais pas où déposer le fichier .js.
Sauf erreur Gladys utilise des routes url pour accèder au fichier.
Du coup je ne sais pas où je peux déposer le fichier pour y accèder.
A moins que je puisse le lancer via une commande.
Mais là encore je ne suis pas sur de moi…
Voilà si vous pouviez me guider
Merci!
Cdt,
Lionel
bonjour @pierre-gilles ,
Alors pour être complet j’ai bien penser à lancer le script du pi. j’ai compris que celà ne fonctionnait pas comme celà. j’ai néanmoins installer Node js sur l’instance pour pouvoir lancer des commandes npm. mais je ne sais pas si c’est utile et/ou suffisant ?
J’avoue qu’à partir de là je ne saurais pas aller plus loin sans un coup de main plus poussé…genre step by step
Ou un lien vers un tuto ?
Sinon je peux toujours t’envoyer ma clé APi pour que tu puisses tester.
Merci
Je viens de travailler sur le bug ce matin. J’ai isolé la cause du bug côté Gladys, effectivement on recevait l’ID en Number JS, sauf que le cast vers un String pour la DB était fait automatiquement par Sequelize, et je pense qu’il pensait que notre Number était un float.
En faisant le cast nous même dans le service Telegram avec un .toString(), le bug n’est plus présent.
J’ai écrit toute une batterie de test pour être sur que le problème ne se reproduise plus.
Le correctif est dans cette PR :
Merci à ceux qui ont pris le temps de me donner les bonnes informations, c’est un bug assez marrant car il n’a touché que 10% des utilisateurs, car le cast n’a l’air de prendre ce chiffre pour un float que si votre ID Telegram finit par un 9 ! 1 chance sur 10 donc