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

隨選筆記文

Front-End

Day.js 計算最近7天、上週、上個月的日期

Vue

用 Vue CLI 3 + Vuetify 製作說明頁面

Analytics Google

用 GA Spreadsheet Add-on 製作網站訪客人數功能

Google Others

用 reCAPTCHA v2 來做非機器人驗證

Firebase Google

Firebase Authentication 第三方登入 – Google、FB

Bot Slack

Slack 通知功能 可互動

Front-End

IntersectionObserver:下篇-實際應用 lazyload、進場效果、無限捲動

Front-End

File API 客製上傳檔案按鈕 / input file

PWA

PWA 學習筆記 – 4:manifest.json

Analytics Google

GA 工具 Google Analytics Debugger 介紹及使用

本站準備替換留言功能,投票調查中,歡迎 參與投票

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

Let's Write

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