Telegram Bot开发问题:时间变量未写入表格且pola[3]无法加粗
问题解决方案
1. 时间数据写入Google Sheets修复
问题原因
原代码里waktu变量是在执行appendRow之后才定义的,而且appendRow的参数数组没包含时间字段,导致时间无法写入表格。
修复步骤
- 提前获取并格式化当前时间,放在
appendRow执行之前 - 把
waktu作为第四个元素加入appendRow的数组中
2. Telegram消息中pola[3]加粗显示修复
问题原因
- 原代码用了转义后的
<b>标签,Telegram无法识别为HTML格式 - 调用
sendMessage时没指定parse_mode为HTML,Telegram不会解析HTML标签
修复步骤
- 将消息里的
<b>替换成直接的<b>标签 - 修改
sendMessage调用,添加parse_mode: "HTML"参数(需确保你的sendMessage函数支持传入额外参数,若原函数未处理,要同步修改该函数)
修改后的完整代码
function tambah(cid, cmd) { var txt = ''; var pola = cmd.match(/tambah#(.+)#(.+)#(.+)/); Logger.log(pola); if (pola[1] !== '' && pola[2] !== '' && pola[3] !== '') { var uji = cek(pola[1]); if (uji === '') { // 提前获取并格式化时间 var now = new Date(); var waktu = Utilities.formatDate(now, "Asia/Jakarta", "dd/MM/YYYY HH:mm:ss"); var ws = SpreadsheetApp.openById(ssID); var ss = ws.getSheetByName('material'); // 追加行时包含时间字段 ss.appendRow([pola[1], pola[2], pola[3], waktu]); // 使用正确的HTML加粗标签 txt = `Material ${pola[1]} Jumlah ${pola[2]} dan Satuan <b>${pola[3]}</b>\n berhasil ditambahkan...`; sendMessage(cid, txt, { parse_mode: "HTML" }); } else { txt = `Sudah ditemukan ${uji}`; sendMessage(cid, txt, { parse_mode: "HTML" }); } } else { txt = 'Pola salah'; Logger.log(txt); } }
补充说明
如果你的sendMessage函数原本只接受cid、txt两个参数,需要修改该函数以支持第三个配置参数,示例如下:
function sendMessage(cid, text, options = {}) { var url = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`; var payload = { chat_id: cid, text: text, ...options // 扩展传入的配置参数 }; var params = { method: "post", contentType: "application/json", payload: JSON.stringify(payload) }; UrlFetchApp.fetch(url, params); }
内容的提问来源于stack exchange,提问作者Saitama
相关产品推荐
相关产品推荐

