К содержанию
200 поинтов при регистрацииБез карты

Telegram-бот для скачивания видео с YouTube: как запустить свой

Вы пишете бота и работаете с аудиторией, мы берём на себя скачивание: очередь, кэш готовых файлов и доставку в Telegram. Бот остаётся вашим — нам нужен только его @username, токен BotFather никуда не передаётся.

Что нужно, чтобы запустить бота

Три вещи. Бот, созданный через BotFather, — это две минуты. Небольшой бэкенд на любом языке, который умеет принимать сообщения от Telegram и делать HTTP-запросы: подойдёт то, на чём вы уже пишете. И аккаунт massbots с токеном API — вход через Telegram, без паролей.

Не нужно: сервер с большим диском под видео, обновления загрузчика, мониторинг блокировок площадки. Всё это уже работает на нашей стороне и оплачивается по факту запросов.

Как проходит запрос пользователя

Пользователь присылает боту ссылку. Бот вынимает из неё идентификатор видео и запрашивает GET /video/{id}/formats — в ответе доступные качества и отметка cached у тех, что уже скачаны; у остальных есть размер файла. По этому списку удобно нарисовать кнопки выбора качества и сразу показать, что придёт быстро.

Пользователь нажимает кнопку, бот вызывает GET /video/{id}/download/{format}. Если файл в кэше, в ответе сразу status: ready и file_id. Если нет — status: queued, и бот повторяет запрос раз в пять-семь секунд, пока файл не будет готов. В это время пользователю можно показать «загружаю» и обновлять сообщение.

Получив file_id, бот отправляет его методом sendVideo или sendAudio — как любой другой файл, который уже есть в Telegram. Ничего не скачивается на ваш сервер и не загружается с него.

Почему именно file_id

Telegram не даёт боту отправить чужой file_id, поэтому мы доставляем файл вашему боту внутри Telegram и возвращаем идентификатор, который принадлежит именно ему. Для вашего кода это выглядит просто: пришёл file_id — отправили пользователю.

Практическое следствие: ваш бэкенд не гоняет через себя гигабайты видео. Ему достаточно самого дешёвого хостинга — он обменивается с нами короткими JSON-ответами и вызывает Bot API.

Экономика бота

Скачивание стоит 10 поинтов — 0,01 $. Повторная отдача ролика, который ваш бот уже получал, — 2 поинта. Тысяча запросов от ваших пользователей обойдётся от 2 $, если они снова и снова просят одни и те же ролики, до 10 $, если каждый ролик для вашего бота новый. Реальная цифра будет между ними и зависит от того, что смотрит ваша аудитория.

Данные о видео для карточки — 1 поинт, список форматов бесплатен, запросы статуса загрузки тоже. Ошибки не тарифицируются: если ролик удалён или приватный, вы получите понятную причину в ответе и ничего не заплатите.

Стартовать можно без вложений: 200 поинтов выдаются при регистрации, пополнение начинается с 5 $. Для проверки идеи и первых пользователей этого достаточно.

Несколько ботов и общий баланс

К одному аккаунту можно подключить несколько ботов — например, основной и тестовый, или ботов под разные языки аудитории. Баланс общий, статистика списаний ведётся по каждому запросу. В запросах указывается заголовок X-Bot-Id, чтобы файл доставлялся нужному боту.

На каком масштабе это работает

Через API проходит 4,4 млн скачиваний в месяц, к нему подключено 56 ботов. Загрузку мы доводим до конца сами: ваш бот получает либо готовый file_id, либо понятную причину отказа — и за ошибку поинты не списываются.

Кэш из 95 миллионов файлов общий для всех, кто работает через API. Поэтому ваши пользователи с первого дня получают популярные ролики быстро: скачивать их с YouTube заново не нужно, file_id приходит в первом же ответе. Цена при этом обычная — 2 поинта стоит повторная отдача ролика, который ваш бот уже получал.

Вопросы по теме

Нужно ли уметь программировать?

Да, минимально: принять сообщение от Telegram, сделать несколько HTTP-запросов и отправить file_id. Это делается на любом языке; готового бота «без кода» мы не предоставляем.

Можно ли подключить уже работающего бота?

Да. Добавьте его @username в кабинете и начните вызывать API из существующего кода. Для пользователей бота ничего не меняется, токен BotFather остаётся у вас.

Что видит пользователь, пока идёт загрузка?

То, что покажет ваш бот. API возвращает статусы queued и downloading, а вы решаете, как их отобразить — сообщением «загружаю», прогрессом или просто ожиданием. Опрашивать статус стоит раз в пять-семь секунд.

Как ограничить расходы?

Баланс — естественный предохранитель: когда поинты заканчиваются, платные запросы возвращают 403, а не уходят в минус. Расходы по дням и типам запросов видны в кабинете и по GET /me/stats.

Начните с бесплатного баланса

200 поинтов при регистрации — около 20 свежих скачиваний, карта не нужна. Пополнение от 5 $. Вход через Telegram.