将消息从 Telegram 组发送到特定成员 ID 到 Google 表格
Send messages to a specific member id from a Telegram group to Google Sheets
bot 已经是组的管理员,并将所有已发送的消息发送到 google 工作表。
但是,我不想要所有成员,我只想要一个特定的成员。
假设他的 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, id, username, name, text]);
}
如果上述修改不是您期望的结果,您能否在您的脚本中提供您的e.postData.contents
示例值?借此,我想确认一下你目前的情况。
参考:
bot 已经是组的管理员,并将所有已发送的消息发送到 google 工作表。
但是,我不想要所有成员,我只想要一个特定的成员。
假设他的 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, id, username, name, text]); }
如果上述修改不是您期望的结果,您能否在您的脚本中提供您的
e.postData.contents
示例值?借此,我想确认一下你目前的情况。