Telegram Bot學習筆記-5:取得使用者大頭照

Telegram bot學習筆記-5:取得使用者大頭照

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篇:

用GCP + node.js接收/推播訊息

用google apps script接收/推播訊息


user_id

user_id在前幾篇筆記文都有寫到,收到使用者傳的訊息時,機器人紀錄的json就有user_id了,訊息的json如下:

收到訊息時的json
收到訊息時的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種,一種是使用者有設大頭照,一種則是沒有設定。

有大頭照:

使用者有設大頭照,photos有值
使用者有設大頭照,photos有值

沒有大頭照:

使用者沒有大頭照,photos是空陣列
使用者沒有大頭照,photos是空陣列

有設定大頭照,才能取得file_id,telegram會回傳3種尺寸的圖檔id。


file_path

有了file_id,就可以拿file_id去取file_path,一樣是POST取得,取得file_path的code如下:

console.log(filePath.data) 的結果如下圖:

取得的file_path
取得的file_path

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學習筆記系列

  1. 用GCP + node.js接收/推播訊息
  2. 用google apps script接收/推播訊息
  3. 鍵盤keyboard
  4. 命令列commands
  5. 取得使用者大頭照

Summary
Telegram Bot學習筆記-5:取得使用者大頭照
Article Name
Telegram Bot學習筆記-5:取得使用者大頭照
Description
本篇大綱:Telegram Bot的大頭照要另外取得、取得使用者大頭照的流程、user_id、file_id、file_path、取得大頭照、完整示範程式碼、參考資源。要拿使用者大頭照,無法單純的只call一個API就取得,實做的結果是用了3個API才成功。
Augustus
Let's Write
Let's Write
Publisher Logo

留言

avatar
  訂閱  
通知