Как добавить аватарку в мини-приложение PuzzleBot

База знаний › PuzzleBot › Telegram

Как добавить аватарку в мини-приложение PuzzleBot

Аватарка делает бота более личным: пользователь видит своё фото в личном кабинете мини-приложения. Ниже — рабочая схема через Telegram API, переменную PuzzleBot и HTML-блок.

PuzzleBot Telegram мини-приложение

Настраиваем переменную

01Создаём переменную для аватарки

Сначала настраиваем переменную, которая получает изображение аватарки из Telegram-профиля подписчика. Для этого переходим во вкладку «Переменные».

02Указываем параметры переменной
  1. Создаём персональную переменную.
  2. Выбираем вариант «Интегрированный».
  3. Тип интеграции оставляем «HTTP запрос».
  4. Формат значения оставляем «Текст».
  5. В ссылку JSON вставляем запрос к Telegram API.
https://api.telegram.org/bot<TOKEN из BotFather>/getUserProfilePhotos

Токен берём из бота @BotFather. Тип запроса оставляем «GET».

Передаём параметры запроса

03Добавляем user_id и limit
  1. Нажимаем «Добавить параметр».
  2. Ключ: user_id, значение: {{USER_ID_TEXT}}.
  3. Второй параметр: ключ limit, значение 1.

Значение 1 ограничивает запрос одной последней аватаркой.

04Проверяем запрос

Нажимаем «Проверить запрос». Если всё хорошо, в ответе появятся варианты для выбора. Нужно выбрать значение, которое показано на скриншоте.

Выводим аватарку в мини-приложении

05Добавляем HTML-блок

Переходим в любое мини-приложение и добавляем блок HTML-кода. Сейчас это самый простой способ вывести картинку через переменную в мини-приложении.

06Вставляем HTML

В HTML-блок вставляем пример:

<img src="{{LINK_BY_FILE_ID}}{{AVATAR_PHOTO}}" style="width: 100%" onerror="this.src='URL_заглушки';">

AVATAR_PHOTO — название созданной ранее переменной. URL_заглушки — прямая ссылка на файл, который покажется, если у подписчика нет аватарки.

Почему не {{USER_AVATAR_URL}}

07Системная переменная даёт маленькую картинку

Можно спросить: почему не взять системную переменную {{USER_AVATAR_URL}}? Потому что размер этого изображения маленький. Если растянуть его на ширину экрана, качество сильно ухудшится.

Поэтому берём фото через Telegram API и выводим его через свою переменную.

Отдельное спасибо разработчикам

Антону @bertish_zog, Евгению @Alexashin и Наталье @B0gdanka, благодаря инициативе которой этот урок стал возможен.

Ирина Захарова, разработчик ботов.

Ирина Захарова
Вернуться в базу знаний