将电报机器人与谷歌应用程序脚本连接

2024-03-21

我在电报机器人上设置了一个机器人,并通过以下应用程序脚本将其与谷歌电子表格连接this https://www.youtube.com/watch?v=mKSXd_od4Lg教程。这是代码:

var token = ""; // FILL IN YOUR OWN TOKEN
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl = ""; // FILL IN YOUR GOOGLE WEB APP ADDRESS
var ssId = ""; // FILL IN THE ID OF YOUR SPREADSHEET

function getMe() {
  var url = telegramUrl + "/getMe";
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function setWebhook() {
  var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function sendText(id,text) {
  var url = telegramUrl + "/sendMessage?chat_id=" + id + "&text=" + text;
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function doGet(e) {
  return HtmlService.createHtmlOutput("Hi there");
}

function doPost(e) {
  // this is where telegram works
  var data = JSON.parse(e.postData.contents);
  var text = data.message.text;
  var id = data.message.chat.id;
  var name = data.message.chat.first_name + " " + data.message.chat.last_name;
  var answer = "Hi " + name + ", thank you for your comment " + text;
  sendText(id,answer);
  SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(),id,name,text,answer]);

  if(/^@/.test(text)) {
    var sheetName = text.slice(1).split(" ")[0];
    var sheet = SpreadsheetApp.openById(ssId).getSheetByName(sheetName) ? SpreadsheetApp.openById(ssId).getSheetByName(sheetName) : SpreadsheetApp.openById(ssId).insertSheet(sheetName);
    var comment = text.split(" ").slice(1).join(" ");
    sheet.appendRow([new Date(),id,name,comment,answer]);
  }
}

现在我遇到了以下问题;我使用我的机器人来存储来自家庭自动化系统的消息。因此,我通过 HTTP GET 请求将这些消息从系统发送到电报机器人:

目前,这些通过 http get 请求发送的消息似乎被脚本忽略了。有谁知道我该如何解决这个问题?


从您的问题和评论来看,您似乎正在努力将信息从脚本发送到 Telegram 上的机器人。以下是执行此操作的步骤:

1.- 创建一个机器人:在 Telegram 搜索中查找@BotFather。单击开始,输入 /newbot,为其指定名称和用户名。您应该获得一个令牌来访问 HTTP API。保存此令牌。

2.- 找到你的机器人在 Telegram 上使用其用户名。给它写一些东西,例如'测试'。这稍后会派上用场。

3.- 测试访问从您的代码到机器人

var token = "123456:kioASDdjicOljd_ijsdf"; // Fill this in with your token
var telegramUrl = "https://api.telegram.org/bot" + token;

function getMe() {
  var url = telegramUrl + "/getMe";
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

你应该得到类似这样的东西:

{"ok":true,"result":{"id":<somenumber>,"is_bot":true,"first_name":"<name of your bot>","username":"<username of your bot>","can_join_groups":true,"can_read_all_group_messages":false,"supports_inline_queries":false}}

4.- 写下发信息功能

function sendMessage(chat_id,text) {
  var url = telegramUrl + "/sendMessage?chat_id=" + chat_id + "&text=" + text;
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

已知您要发送的文本,例如“测试机器人”,但 chat_id 未知。我们从哪里得到这个?

5.- 找到chat_id。在运行此功能之前,请确保您至少已在 Telegram 上向您的机器人写入一条消息(第 2 步)

 function getChat_id(){
   var res = UrlFetchApp.fetch(telegramUrl+"/getUpdates").getContentText();
   var res = JSON.parse(res);
   Logger.log(res.result[0].message.chat.id.toString());
}

6.- 运行发送消息使用您在第 5 步中找到的 chat_id 以及您要发送的消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将电报机器人与谷歌应用程序脚本连接 的相关文章

随机推荐

  • 使用 Chrome 打开正文中包含 HTML 的 Outlook

    虽然我已经从 Stack 中找到了很多这方面的信息 特别是here https stackoverflow com questions 5620324 mailto with html body 我只是想绝对确定在 Chrome 中无法执行
  • 嵌套哈希中的 Form_tag 参数

    我有一个没有与之关联的模型的表单 所以我正在使用form tag而不是form for 正如预期的那样 当用户提交表单时 每个字段都包含在 params 哈希中 但表单会发生很大变化 我希望在 params 哈希中包含一个哈希 该哈希将保存
  • .Net 3.5 中 Dynamic 关键字的使用

    我使用 net v4 5 在 Visual Studio 2013 中编写了这段代码 我遇到的问题是 我现在必须降级到 net v3 5 而动态关键字会抛出错误 因为缺少程序集引用 net v3 5 中是否有与 动态 等效的类型 或者有什么
  • Python Curses 不清除屏幕

    我想在Python下使用Curses而不清除屏幕 原因是我希望我的应用程序在现有屏幕上弹出一个简单的小菜单并很快退出 退出时将弹出菜单中丑陋的部分保留在屏幕上是可以接受的 但不是首选 我们的想法是将其用于快速实用的系统管理应用程序和脚本 其
  • 我的拉取请求已合并,下一步该做什么?

    我最近参与了 GitHub 的一个项目 我做了以下事情 分叉原始存储库 将其克隆到我的本地计算机 创建一个分支来修复现有错误 修复该分支中的错误 将该分支推送到我的存储库 向存储库的作者发送拉取请求以合并我的fix分支到其主分支 这是我第一
  • 如何在C++中输出变量的二进制值

    我的 C 编程课上有一项作业 要求编写一个输出变量值的二进制值的函数 例如 如果我将 a 的值设置为字符 我应该得到 a 输出的二进制值 我的 C 教授并不是全世界最伟大的 而且我在使用他给我们的神秘示例来使我的代码正常工作时遇到了困难 现
  • 在 LINQ 中学习表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您可以推荐哪些有关 LINQ 表达式树的文章 教程 Link https learn microsof
  • 在执行另一个方法时(动态)更新标签文本

    我是一名 iOS 开发人员 目前正在开发 iPhone 应用程序 我有一个关于更新 ViewController 内容的简单问题 如果我能得到了解此问题的人的反馈或有建议的解决方案 我将不胜感激 我正在编写一种方法 不断更新标签的文本 以及
  • 如何在通过域名输入时仅显示一次页面预加载器?

    所以 我在主页上有 jQuery 页面预加载器 如下所示
  • 如何在 Android Studio (4.2) 中查看 JetpackCompose kotlin 源代码? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 When I command click进入 JetpackCompose 函数 我看到的全部如下 根据 Android Studio 4
  • Ansible 要求安装 MySQL-python,尽管它已经安装

    我正在尝试使用在 Mac OSX 上运行的 Ansible 控制器创建一个新的 MySQL 数据库 当我第一次得到msg the python mysqldb module is required错误消息 我添加了一个任务来安装MySQL
  • 无法通过java Runtime.getRuntime().exec()执行CURL命令

    我正在使用 java 执行curl 命令 curl i user OAMADMIN tenant 358922247351079 svc 358922247369079 APPID Iuj 2swilg5fhv H Content Type
  • next.js 和material-ui - 让它们工作

    我给予next js旋转了一下 我无法让最简单的设置起作用 这是我的设置 相关库 反应 16 2 0 react dom 16 2 0 下一个 4 2 2 express 4 16 2 下一个路线 1 2 0 material ui 0 2
  • sizeof() 不由预处理器执行

    if sizeof int 4 do something 在内部使用 sizeof if在里面时不工作 define它有效 为什么 define size x sizeof x sizeof x 0 works 没有什么是邪恶的 一切都可能
  • “即时”编辑大型 xml 文件

    我有一个存储在数据库 blob 中的 xml 文件 用户将通过 spring hibernate Web 应用程序下载该文件 在通过 Hibernate 作为 byte 检索它之后 但在将其发送到输出流之前 我需要编辑 XML 的某些部分
  • 在引用之前如何确保类是有效的?

    public class Person public string FullName get set public int PhoneNumber get set public int CarQTY get set 如果有人没有完全填充对象
  • Symfony2 - 将 /web 目录重定向到 root

    我的 Symfony 项目存在重复内容问题 以下网址提供相同的内容 www mywebsite com web page and www mywebsite com page 这是我的内容 htaccess file
  • 如何列出(或导出)数据库中所有触发器的代码?

    我正在将数据库中的当地时间更改为 UTC 时间 有很多触发器将信息复制到当前使用的历史表GETDATE 我想找到每个使用的触发器GETDATE 代替GETUTCDATE 在数据库中 有什么方法可以自动执行此操作 我已将它们列出select
  • 从 Postgis 获取投影限制

    我收到以纬度 经度坐标对形式对 API 进行的空间查询 我的空间数据是不覆盖整个地球的投影 因此某些查询超出范围 我想用有用的错误消息来回复错误的查询 我不想尝试在 GIS 规范或标准中找出每个投影的边界 并从中获取正确的纬度 经度对 而是
  • 将电报机器人与谷歌应用程序脚本连接

    我在电报机器人上设置了一个机器人 并通过以下应用程序脚本将其与谷歌电子表格连接this https www youtube com watch v mKSXd od4Lg教程 这是代码 var token FILL IN YOUR OWN