Soy bastante nuevo en javascript y telegram bot. Logré vincular mi bot de Telegram a las hojas de Google y quiero guardar el nombre de los remitentes que envían mensajes a mi bot en las hojas de Google. La función funciona muy bien si el bot no es parte de un chat grupal, pero si lo es, da un valor negativo para la ID de usuario y un mensaje indefinido para el nombre de usuario.
Mi código es el siguiente (eliminé la información real de la hoja y el bot):
var token = ""; //Token of Telegram Bot var telegramUrl = "https://api.telegram.org/bot" + token; //connects bot and telegram chat var webAppUrl = ""; var ssId = ""; function getMe() //gets the bot info { var url = telegramUrl + "/getme"; var response = UrlFetchApp.fetch(url); Logger.log(response.getContentText()); } function setWebhook() //links url of project { var url = telegramUrl + "/setWebhook?url=" + webAppUrl; var response = UrlFetchApp.fetch(url); Logger.log(response.getContentText()); } function sendText(id,text) //sends confirmation text { var url = telegramUrl + "/sendMessage?chat_id=" + id + "&text=" + text; var response = UrlFetchApp.fetch(url); Logger.log(response.getContentText()); } function doPost(e) // { var data = JSON.parse(e.postData.contents); var str = data.message.text; var id = data.message.chat.id; var name = data.message.chat.first_name + " " + data.message.chat.last_name; SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(),id,name,str]); }Utilice data.message.from .
Además, last_name del usuario puede estar en blanco para que la propiedad no esté undefined en el objeto del evento. Que tienes que manejar.
var data = JSON.parse(e.postData.contents); var str = data.message.text; var id = data.message.from.id; var name = data.message.from.first_name + (data.message.from.last_name ? " " + data.message.from.last_name : "");