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
相关产品推荐
相关产品推荐

