iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Modern Web

telegram開發筆記系列 第 7

[07] telegram 回聲各種訊息種類

請跟查看官方提供的文件

https://core.telegram.org/bots/api#available-methods

查詢 sendMessage 然後看下面一系列的 send 來製作回聲

開始實作回聲所有類型的訊息

但有一種類型比較特別,他是會分多個檔案傳進來的這邊先不處理

先修改 main 檔案讓她進行判斷

請主要看 parseDataToTelegram 這個函式的判斷

main.js

const { sendBotMessage } = require("./telegramItem");

function receiveTelegram(data) {
  data = parseDataToTelegram(data);
  sendBotMessage(data);
}

/**
 * @description 用來分析與轉換對應的訊息類型
 *
 * @param {*} estringa
 * @return {*}
 */
function parseDataToTelegram(estringa) {
  var payload = {};
  if (estringa.message.text) {
    payload = {
      method: "sendMessage",
      text: estringa.message.text,
    };
  } else if (estringa.message.sticker) {
    payload = {
      method: "sendSticker",
      sticker: estringa.message.sticker.file_id,
    };
  } else if (estringa.message.photo) {
    array = estringa.message.photo;
    text = array[1];
    payload = {
      method: "sendPhoto",
      photo: text.file_id,
      caption: estringa.message.caption ? estringa.message.caption : "",
    };
  } else if (estringa.message.video) {
    vidoe = estringa.message.video;
    payload = {
      method: "sendVideo",
      video: vidoe.file_id,
      caption: estringa.message.caption ? estringa.message.caption : "",
    };
  } else if (estringa.message.animation) {
    animation = estringa.message.animation;
    payload = {
      method: "sendAnimation",
      animation: animation.file_id,
      caption: estringa.message.caption ? estringa.message.caption : "",
    };
  }
  payload.chat_id = estringa.message.chat.id;
  return payload;
}

module.exports = {
  receiveTelegram,
};

在更改telegramItem.js,現在只負責送出

const axios = require("axios");
/**
 * @description 發送訊息,請換成自己的機器人 token
 *
 * @param {object} data telegram bot api format
 */
function sendBotMessage(data) {
  const url =
    "https://api.telegram.org/bot" +
    "1978609847:AAHg8e-V_bNx78PCZok8uYzN8BYwlRScfgA" +
    "/";
  // 如果他是 text 訊息的話就這樣回聲
  axios({
    url,
    method: "post",
    data,
  })
    .then((data) => {
      console.log("Send Telegram:");
      console.log(data.data);
    })
    .catch((e) => {
      console.log("Send Telegram: Error:");
      console.log(e);
    });
}

module.exports = {
  sendBotMessage,
};

基本上要上傳檔案給機器人傳是很麻煩的

官方建議是先是把檔案傳給這個機器人拿到對應 file_id 後在回傳

有問題可以先參考文件關於 method 對應的文件

day07


上一篇
[06] 回音機器人
下一篇
[08] 回聲多個 media 訊息
系列文
telegram開發筆記18

尚未有邦友留言

立即登入留言