Featured image of post 【TelegramBot】从0开始的Webhook自动应答

【TelegramBot】从0开始的Webhook自动应答

这是简介

众所周知,TG提供着一个近乎无线容量的个人云空间,同时TG拥有信息、资源聚合的特性,以及功能完备的机器人接口、对开发者友好的开放平台。 鉴于以上,目前我的想法是做一个,可以索引公共信息并且聚合信息同时提供私有云上传/下载服务功能的自动化机器人。 该 @Bot 教程后续通过 Java 平台持续开发。

一共是三个功能点。

  • 解析信息
  • 索引信息
  • 私有云上传/下载

前期工作

  1. 创建机器人(@BotFather /newbot)

  2. 从 @BotFather 中取得 token

  3. 发送 GET 请求,获取 bot 接收到的信息

    1. https://api.telegram.org/bot(token)/getUpdates
  4. 设置Webhook(当bot接收到消息后自动发送POST请求到指定url)

    1. 先尝试用gmail部署钩子脚本应用

      https://api.telegram.org/bot(token)/setwebhook?url=callbackur

      谷歌Apps Script管理

    2. 基础脚本代码

      function doPost(e){
        var estringa = JSON.parse(e.postData.contents);
        var payload = identificar(estringa);
        var data = {
          "method": "post",
          "payload": payload
        }
        UrlFetchApp.fetch("https://api.telegram.org/bot(token)/", data);
      }
      
      function identificar(e){
        if (e.message.text){
          var mensaje = {
            "method": "sendMessage",
            "chat_id": e.message.chat.id.toString(),
            "text": e.message.text,
          } 
        }
        else if (e.message.sticker){
          var mensaje = {
            "method": "sendSticker",
            "chat_id": e.message.chat.id.toString(),
            "sticker": e.message.sticker.file_id
          }
         }
        else if (e.message.photo){
          var array = e.message.photo;
          var text = array[1];
          var mensaje = {
            "method": "sendPhoto",
            "chat_id": e.message.chat.id.toString(),
            "photo": text.file_id
          }
         }
          else {
          var mensaje = {
            "method": "sendMessage",
            "chat_id": e.message.chat.id.toString(),
            "text": "Try other stuff"
          }
         }
        return mensaje
      }
      
  5. 通过上面的流程,一个基础的复读机 bot 就算是做好了,后续将会继续深入 bot 的其他接口进行定制化开发。