本篇大綱
Telegram Bot的大頭照要另外取得
Telegram Bot跟Line Bot有一個不同,Line Bot取得的使用者基本資料就有大頭照,而Telegram Bot卻沒有,要取得的話要另外用API取,而且圖片檔案一次只會存活1小時,不愧是保密性高的通訊APP。
要拿使用者大頭照,無法單純的只call一個API就取得,實做的結果是用了3個API才成功。
取得使用者大頭照的流程
要取得使用者大頭照,需要3個參數:
- user_id
- file_id
- file_path
有user_id才能取得file_id,有file_id才能取得file_path,有了file_path,就可以拿到大頭照的圖檔路徑。
以下開始寫的部份,會需要一些Telegram Bot API的基本使用,可先參考以下2篇:
user_id
user_id在前幾篇筆記文都有寫到,收到使用者傳的訊息時,機器人紀錄的json就有user_id了,訊息的json如下:

json中的from.id就是user_id。
file_id
有了user_id,POST到Telegram Bot API便可以取得file_id,本篇用axios來POST,取得file_id的code如下:
console.log(userPhoto.data)
的結果會有2種,一種是使用者有設大頭照,一種則是沒有設定。
這是廣告,點擊一下可以幫本站多個一點點的廣告收入,謝謝
有大頭照:

沒有大頭照:

有設定大頭照,才能取得file_id,telegram會回傳3種尺寸的圖檔id。
file_path
有了file_id,就可以拿file_id去取file_path,一樣是POST取得,取得file_path的code如下:
console.log(filePath.data)
的結果如下圖:

result.file_path就是最後需要的file_path。
取得大頭照
有了file_path,輸入以下網址就可以取得大頭照:
https://api.telegram.org/file/bot${token}/${file_path}
${token}
換成Telegram Bot的token,${file_path}
換成上一段取得的file_path,瀏覽器直接輸入網址按下enter,就會直接下載圖片,也可以拿網址當img的src。
完整示範程式碼
最後附上自己寫的取得使用者大頭照的程式碼:
這是廣告,點擊一下可以幫本站多個一點點的廣告收入,謝謝
參考資源
Telegram Bot API:getUserProfilePhotos
stack overflow:How can i get file_path of telegram bot
Telegram Bot學習筆記系列

