How to get user / avatar image using Telegram bot chat API?

the user object does not have photo_id, so is there a way to get the user avatar?

+8
telegram telegram-bot avatar php-telegram-bot
source share
1 answer

I did not find any php code, but this nodejs worked for me, so I put this to give you an idea of ​​how this works.

  • Create a bot (start chatting with @botfather in your telegram)
  • After creating the bot, it will give you a token for the HTTP API
  • $ npm install --save node -telegram-bot-api
  • create a js file next to the node_modules folder (ex: server.js )
  • put these codes in server.js file and then run it with $ node server.js

      const TelegramBot = require('node-telegram-bot-api'); // replace the value below with the Telegram token you receive from @BotFather const token = 'XXXX35XXXX:XXXX7DCYw5IsY6DHcwXXXXXXXXX'; // Create a bot that uses 'polling' to fetch new updates const bot = new TelegramBot(token, { polling: true }); // Matches "/echo [whatever]" bot.onText(/\/echo (.+)/, (msg, match) => { // 'msg' is the received Message from Telegram // 'match' is the result of executing the regexp above on the text content // of the message const chatId = msg.chat.id; const resp = match[1]; // the captured "whatever" // send back the matched "whatever" to the chat bot.sendMessage(chatId, resp); }); // Listen for any kind of message. There are different kinds of // messages. bot.on('message', (msg) => { const chatId = msg.chat.id; var user_profile = bot.getUserProfilePhotos(msg.from.id); user_profile.then(function (res) { var file_id = res.photos[0][0].file_id; var file = bot.getFile(file_id); file.then(function (result) { var file_path = result.file_path; var photo_url = `https://api.telegram.org/file/bot${token}/${file_path}` bot.sendMessage(chatId, photo_url); }); }); }); 
+1
source share

All Articles