You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Javascript开发Telegram Bot群聊存用户名到Google Sheets异常求助

问题根源

你当前代码的取值对象错误:

  • data.message.chat 对应的是会话本身的信息,单聊场景下会话主体就是用户,所以可以正常拿到用户ID和姓名;群聊场景下会话主体是群组,因此ID为负值,也不会存在first_name、last_name这类用户属性,自然返回undefined。
    你需要从data.message.from 对象取值,这个对象固定代表消息发送者的个人信息。
修正后的代码

只需要修改doPost函数的取值逻辑即可,同时增加兼容逻辑避免用户没有设置姓氏时拼接出undefined:

function doPost(e) 
{
  var data = JSON.parse(e.postData.contents);
  var str = data.message.text; 
  // 原逻辑取的是chat对象,改为取from对象
  var userId = data.message.from.id;
  // 兼容没有last_name的情况
  var userName = data.message.from.first_name + (data.message.from.last_name ? " " + data.message.from.last_name : "");
  // 如果需要留存群ID可以单独再存data.message.chat.id字段
  var chatId = data.message.chat.id;

  SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(), chatId, userId, userName, str]);
}

内容的提问来源于stack exchange,提问作者gogogadget132

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 06:42:02