請跟查看官方提供的文件
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 對應的文件