问题描述
机器人已经是该群组的管理员,并将所有发送的消息发送到谷歌表格。
但是,我不想要所有成员,我只想要一个特定成员。
假设他的 ID 是 123456789
,我如何让机器人只发送来自该成员的消息?
我当前的脚本:
var token = "TOKEN BOT TELEGRAM";
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl = "https://script.google.com/macros/s/ID TO WEB APP/exec";
function setWebhook() {
var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
var dateNow = new Date;
var id = contents.message.from.id;
var username = contents.message.from.username;
var name = contents.message.from.first_name + " " + contents.message.from.last_name;
var text = contents.message.text;
var ssId = "ID TO SPREADSHEET";
var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Página1");
sheet.appendRow([dateNow,id,username,name,text]);
}
解决方法
我相信你的目标如下。
- 您想通过修改脚本来放置来自特定 ID 的用户的值。
修改点:
- 从您的脚本中,我了解到可以通过
var id = contents.message.from.id
检索 ID。我认为这可能会用于实现您的目标。
当这一点反映到你的脚本中时,它变成如下。
修改后的脚本:
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
var dateNow = new Date;
var id = contents.message.from.id;
if (id != 123456789) return; // <--- Added. Or if (id.toSring() != "123456789") return;
var username = contents.message.from.username;
var name = contents.message.from.first_name + " " + contents.message.from.last_name;
var text = contents.message.text;
var ssId = "ID TO SPREADSHEET";
var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Página1");
sheet.appendRow([dateNow,id,username,name,text]);
}
注意:
-
当您修改 Web Apps 的脚本时,请将 Web Apps 重新部署为新版本。这样,最新的脚本就会反映到 Web Apps 中。请注意这一点。
-
如果要针对多个特定 ID 运行脚本,也可以使用以下修改后的脚本。
function doPost(e) { var contents = JSON.parse(e.postData.contents); var dateNow = new Date; var id = contents.message.from.id; var ids = [123456789,]; // Please set the specific IDs. if (!ids.includes(id)) return; var username = contents.message.from.username; var name = contents.message.from.first_name + " " + contents.message.from.last_name; var text = contents.message.text; var ssId = "ID TO SPREADSHEET"; var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Página1"); sheet.appendRow([dateNow,text]); }
-
如果上述修改不是您期望的结果,您能否在脚本中提供您的示例值
e.postData.contents
?借此,我想确认一下您目前的情况。