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. 取得使用者大頭照
  6. Google表單提交時收到通知

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
https://letswrite.tw/wp-content/uploads/2020/08/logo_512.jpg

隨選筆記文

Google Others

用 GCP 建立 Cloud Functions

WordPress

WordPress 好用的會員相關外掛:登入安全性、會員系統

Front-End

用 Microsoft Clarity 網站分析工具,觀察使用者行為

Bot LINE

用LINE bot api建立line@圖文選單

Front-End

用 CSS :target 製作頁籤、手風琴功能

Google Maps

Google Maps API學習筆記-6:畫新冠肺炎分佈圖

Front-End Vue

用Vue.js製作圖片版EDM生成器

API

用 Performance API 檢測檔案讀取時間

Google Others

用Firebase、Google Apps Script、GTM自己做一個讚按鈕

Apps Script Google

用Google Apps Script取得Google Excel資料

訂閱
通知
guest
0 Comments
Inline Feedbacks
看所有留言

Let's Write

前端工程師 Augustus 的學習筆記 — solving problems, in simple ways.