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

/

Telegram Bot 的大頭照要另外取得

Telegram Bot 跟 LINE Bot有一個不同,LINE Bot 取得的使用者基本資料就有大頭照,而 Telegram Bot 卻沒有,要取得的話要另外調用 API 取,而且圖片檔案一次只會存活 1 小時,不愧是保密性高的通訊 App。

要拿使用者大頭照,無法單純的只調用一個 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。


完整示範程式碼

最後附上 Augustus 寫的 取得使用者大頭照 的程式碼:


參考資源

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、取得大頭照、完整示範程式碼、參考資源。要拿使用者大頭照,無法單純的只調用一個 API 就取得,實做的結果是調用了 3 個 API 才成功。
Augustus
Let's Write
Let's Write
https://letswrite.tw/wp-content/uploads/2020/08/logo_512.jpg

隨選筆記文

Vue

Nuxt.js 一些好用的設定

Google Others

Google Optimize A/B Testing 使用筆記

Apps Script Google

用 Google Apps Script 取得 Google Sheets / Excel 資料

Front-End

拿 Trello 當資料庫 建一個店家清單 – 上篇:Trello 基本使用

WordPress

WordPress 基本介紹

Google Maps

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

Front-End

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

Front-End

一些有趣的 CSS 選擇器

Analytics Google

Google Analytics 用戶計時 / User Timings

Front-End

GitLab Pages:3 + 2 個步驟讓 GitLab 專案產生靜態頁

以下是留言,但關於留言的部份必需先讓你們知道:

本站的文章都是 Augustus 因為覺得有趣,才會實作並整理成筆記文而後進行發表。

如果留言是希望把 Demo 改成「你想要」的樣子,或是把功能改成「符合你需求」的樣子,

Sorry~ 除非那修改是 Augustus 也有興趣的,不然不會幫你們寫程式去面對工作或是交作業。

未來這類的留言不會再主動回覆。😎

另外,公開信箱是為了讓金流驗證用,

因為之前遇過幾次回信協助解決問題後,對方卻一聲謝謝也沒有,就這樣拿去幫工作交差。

因此決定不再回覆信件,有疑問就利用留言功能囉。

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