Javascript 从电报中保存用户名

Javascript saving usernames from telegram

我对 javascript 和电报机器人还很陌生。我已经设法 link 我的电报机器人到 google sheets 并且想保存发送消息到我的机器人的发件人的名字 google sheets . 如果 bot 不是群聊的一部分,该函数会很好用,但如果是,它会为用户 ID 提供负值,并为用户名提供未定义的消息。

我的代码如下(我删除了 sheet 和机器人的实际信息):

    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]);
}

使用data.message.from.

此外,用户的last_name可能是空白的,属性在事件对象中将是undefined。你必须处理。

  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 : "");