Практическое руководство
Telegram-бот, который создаёт видео по команде пользователя
От чистого токена до рабочего конвейера: пользователь отправляет текст — бот возвращает готовый ролик прямо в чат
⏱ 45 минут на базовую версию 🐍 Python + aiogram 🎬 ffmpeg / MoviePy

Как бот создаёт видео: архитектура за одну минуту

Прежде чем писать код, важно понять, что бот сам по себе видео не «рисует». Он — посредник между пользователем и движком генерации. Вот полная цепочка:

👤
Пользователь
Отправляет текст или команду
→
🤖
Бот (aiogram)
Принимает запрос, ставит в очередь
→
⚙️
Движок генерации
ffmpeg, MoviePy или видео-API
→
🎞
Готовое видео
Отправляется как message.answer_video()

Три подхода к генерации видео — какой выбрать

«Создать видео» может означать очень разное. От выбранной задачи зависит весь технологический стек:

Подход Что делает Сложность Когда выбирать
Шаблонный рендер
ffmpeg / MoviePy
Вставляет текст пользователя в готовый шаблон: слайды, субтитры, озвучка Низкая Массовый контент: цитаты, факты, карточки
Обработка загруженного
ffmpeg + фильтры
Бот получает видео от пользователя и преобразует: обрезка, сжатие, стикер, GIF Средняя Утилитарные боты: конвертеры, кружки, стикеры
Генерация нейросетью
видео-API
Промпт пользователя уходит в модель text-to-video, бот ждёт результат и отдаёт его в чат Высокая Уникальные ролики по описанию, креативные проекты

Пошаговая инструкция: бот за пять шагов

1

Получение токена через BotFather

В Telegram открывается диалог с официальным ботом @BotFather. Команда /newbot запускает создание: бот попросит имя и username (обязательно заканчивается на «bot»). В ответ приходит токен вида 123456789:AAE… — это ключ к API, который нельзя публиковать.

2

Установка библиотек

Базовый стек — Python 3.10+, фреймворк aiogram и ffmpeg для работы с видео:

pip install aiogram moviepy
# ffmpeg ставится отдельно: apt install ffmpeg / brew install ffmpeg
3

Скелет бота: приём текста от пользователя

Минимальный обработчик: всё, что не команда, считаем запросом на генерацию видео:

from aiogram import Bot, Dispatcher, F
from aiogram.types import Message, FSInputFile
from aiogram.filters import Command

bot = Bot("ВАШ_ТОКЕН")
dp = Dispatcher()

@dp.message(Command("start"))
async def start(m: Message):
    await m.answer("Отправьте текст — я превращу его в видео 🎬")

@dp.message(F.text)
async def make_video(m: Message):
    await m.answer("⏳ Генерирую видео, это займёт около минуты…")
    path = render_video(m.text, m.from_user.id)
    await m.answer_video(FSInputFile(path))
4

Рендер видео: функция render_video

Самый простой рабочий вариант — слайд с текстом на фоне, собранный через MoviePy или одной командой ffmpeg:

ffmpeg -f lavfi -i color=c=0xD80621:s=1080x1920:d=5 \
  -vf "drawtext=text='Привет мир':fontcolor=white:fontsize=80:x=(w-text_w)/2:y=(h-text_h)/2" \
  -pix_fmt yuv420p output.mp4

Команда создаёт вертикальный ролик 9:16 длительностью 5 секунд с текстом по центру. Заменяя текст на запрос пользователя, бот генерирует персональные ролики. Дальше наращиваются слои: фоновая картинка, музыка, озвучка текста через TTS, анимация появления.

5

Запуск: polling или webhook

Для старта достаточно опроса серверов Telegram — одна команда await dp.start_polling(bot) и бот работает даже на домашнем компьютере. При высокой нагрузке переходят на webhook: Telegram сам отправляет обновления на сервер, что снижает задержку ответа.

Главная ловушка: блокировка на время рендера

Нажав на вкладки ниже, можно увидеть, что происходит с ботом при рендере видео без очереди задач и с ней:

Пользователь 1
60 сек рендер
Пользователь 2
ждёт…

⚠ Все остальные пользователи висят без ответа, пока не закончится чужой рендер

Ограничения Telegram Bot API, о которых нужно знать

Именно лимиты чаще всего превращают «рабочий прототип» в «что-то сломалось»:

50 МБ
Максимум для отправки видео обычным ботом. С локальным Bot API сервером — до 2000 МБ
20 МБ
Лимит на скачивание файла, который пользователь прислал боту
30/сек
Максимальная частота исходящих сообщений для всех методов в сумме
yuv420p
Обязательный формат пикселей, иначе ролик не будет предпросмотра в чате

Чеклист перед запуском в продакшн

Итог: бот, создающий видео прямо в Telegram, состоит из трёх слоёв — приём запроса, фоновый рендер, доставка результата.

Начните с шаблонного рендера на ffmpeg: рабочая версия собирается за вечер, а масштабировать её можно до полноценного видео-конвейера