Получение ботом медиа-файлов и сохранение их на своем сервере

Получение ботом медиа-файлов и сохранение их на своем сервере

iMakeBots

В своей работе над ботом, который проводит розыгрыши, мне потребовалось сохранять у себя на сервере файлы, присылаемые пользователями. Очень интересный и простой процесс получился.

У Telegram Bot Api для этого есть специальный метод getFile. На входе он получает file_id, на выходе объект File.

Параметров file_id у картинки может быть больше одного, потому как телеграм присылает несколько вариантов размеров картинки, последний всегда оригинал. При загрузке картинки в бот приходит информация в виде объекта Photo, в котором лежит массив объектов PhotoSize

Наш бот будет принимать только команду /start и картинку, на остальные запросы он будет "ругаться". Чтобы определить, что нам пришло в нашем уже знакомом по предыдущим статьям методе init() будем проверять ключи массива пришедших данных. Для реализации задуманного нам нужен только объект Message

Картинки мы будем сохранять в директории img, располагается она рядом с файлом index.php в котором наш код.

.
..
[ img ]
index.php

В случае если прислали картинку, то мы передаем массив объектов PhotoSize в метод getPhoto(), он вернет результат в boolean. Внутри метода происходит 2 действия:

  1. через метод getPhotoPath() получаем расположение файла на сервере Telegram
  2. через метод copyPhoto() копируем картинку к себе на сервер

Картинка располагается на сервере Telegram по стандартному пути:

https://api.telegram.org/file/bot<token>/<file_path>

Выводит картинку по этому пути где-либо в сети не рекомендую, так как будет доступен ваш токен от бота. 

Сохранять себе на сервер мы будем оригинал, поэтому нам надо узнать количество элементов в массиве, использовать будем функцию count()

Чтобы получить расширение файла, будем разбивать file_path в массив по знаку . функцией explode() и брать последний элемент используя функцию end(). Для копирования файлов пользуемся функцией copy().


Подводим итог

Сохранить картинку через Телеграм Бот очень просто. Методы Bot API позволяют это сделать быстро. Для сохранения других типов файлов с Телеграм алгоритм аналогичный. Скачать исходный код можно по этой ссылке

Вы можете оставить комментарий к статье.

Report Page