Как узнать ссылку на картинку отправленной боту telegram

REDMOND

Как узнать ссылку на картинку отправленной боту telegram?

Далее делаем запрос https://api.telegram.org/file/bot/ и получаем картинку.
Но такую ссылку нельзя показывать конечному пользователю, т.к. в ней указывается токен.

  • Facebook
  • Вконтакте
  • Twitter

pink2floyd

После загрузку фотки создается несколько вариантов (разные размеры), поэтому будет несколько file_id для картинок разного размера.

data->photo[0]->file_id
data->photo[1]->file_id
data->photo[2]->file_id

Бот Telegram — получи URL фотографии

Когда пользователь отправляет изображение через бот Telegram, есть ли способ получить URL изображения? или мне просто нужно где-то сохранить изображение?

1 ответ

В полученном вами массиве сообщений вы можете найти ключ photo , Там вы найдете несколько массивов в следующем формате

Из одного из этих массивов вам нужно взять file_id , Затем вы можете запросить file_path с простой получить на URL https://api.telegram.org/bot<token>/getFile?file_id=<file_id>

Вы получите массив, который выглядит следующим образом

Из результата вам нужно file_path и тогда вы получили местоположение изображения https://api.telegram.org/file/bot<token>/<file_path>

Это трехэтапный процесс. Сначала, когда пользователь отправляет изображение, ваш бот получает такую ​​структуру JSON:

Как видите, Telegram создает изображения низкого разрешения. Если исходное изображение маленькое, у вас может быть только оригинал. Если средний — два. Здесь вы можете видеть, что у меня есть 3 изображения (оригинал — большой 1280*960). Поэтому вам нужно проверить размер массива изображений (например, я PHP)

REDMOND

чтобы прочитать file_id по вашему выбору, поэтому oe из наименьшего, самого большого и т. д. Позаботьтесь, чтобы идентификатор НЕ это file_unique_id, а большой, поэтому file_id.

Обратите внимание, если пользователь отправит за один раз более одного изображения, вы получите одно сообщение для каждого изображения. Таким образом, каждое сообщение касается ОДНОЙ картинки в нескольких разрешениях.

Как только у вашего бота будет file_id, вы должны позвонить в Telegram, отправив file_id. Звонок является базовым с:

Вы возвращаете JSON с помощью:

Итак, копия file_id, вес (обратите внимание, вы не получите обратно размер в пикселях!) И путь.

После этого просто позвоните по следующему пути:

и вы получите картину

Одно замечание: каждый раз, когда я получаю JSON с изображением в более чем одном разрешении, последнее является большим. Но я ничего не нашел в документе об этом факте. Так что я уверен, что у вас не может быть большого в index [0].

Как получить файл присланный пользователем боту в Telegram на python?

Задача легко решаема через вызов функции переадресации сообщения пользователя:

&#x412;&#x441;&#x451; &#x435;&#x449;&#x451; &#x438;&#x449;&#x435;&#x442;&#x435; &#x43E;&#x442;&#x432;&#x435;&#x442;? Посмотрите другие вопросы с метками python файлы telegram-bot pytelegrambotapi или задайте свой вопрос.

дизайн сайта / логотип &#169; 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.24.40828

Нажимая &#171;Принять все файлы cookie&#187; вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

REDMOND

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *