在Google Apps Script中获取Telegram Bot消息ID遇问题求助
解决Google Apps Script Telegram Bot获取message_id的问题
问题根源
- 原
sendMessage函数未返回UrlFetchApp.fetch的响应结果,导致后续调用无法获取数据 - 错误使用
async/await语法:Google Apps Script中的UrlFetchApp.fetch是同步方法,无需异步等待处理
修正后的代码实现
1. 完善sendMessage函数
修改函数,让它返回解析后的Telegram API响应数据:
function sendMessage(chat_id, message) { const data = { method: "post", payload: { method: "sendMessage", chat_id: String(chat_id), text: message, parse_mode: "HTML" } }; // 发起请求并解析响应为JSON对象 const response = UrlFetchApp.fetch(teleUrl + "/", data); return JSON.parse(response.getContentText()); }
2. 简化测试调用
直接同步调用函数,提取所需的message_id:
function greeting() { const apiResponse = sendMessage(chat_id, "HI"); // 从响应结构中获取message_id const messageId = apiResponse.message.message_id; Logger.log("发送消息的message_id: " + messageId); // 可选:打印完整响应查看结构 Logger.log("API完整响应: " + JSON.stringify(apiResponse)); }
核心说明
- Telegram API的
sendMessage接口返回的响应中,message字段包含发送完成后的消息详情,message_id字段即为目标ID - Google Apps Script内置服务大多为同步执行逻辑,强行使用异步语法会导致未处理的Promise实例,出现空对象输出的问题
内容的提问来源于stack exchange,提问作者Shawn Wei Chew
相关产品推荐
相关产品推荐

