В какой-то момент большинство Telegram-ботов превращаются в унылые каталоги кнопок: «нажми раз», «выбери пункт», «подожди». Но мир изменился, и сегодня пользователь хочет AI-опыт уровня ChatGPT, только прямо в мессенджере.
Так родилась идея создать Telegram-бота с многоуровневой архитектурой, который:
- общается как ассистент на GPT-4o/5-семейства моделей;
- делает изображения через Stability.ai;
- генерирует видео через RunwayML;
- ведёт платёжную систему, подписки, монеты;
- позволяет менять категории диалогов;
- имеет полноценную техподдержку, которая работает через Forum Topics.
Многие спрашивают: «Как устроен такой проект внутри?»
Сегодня — впервые — я подробно раскрою всю архитектуру, покажу реальные фрагменты кода и объясню, как всё работает на уровне продакшна.
Эта статья — честная внутренняя кухня: от API-интеграций до базы данных и middleware-магии.
🧱 Архитектура проекта: фундамент
Основная структура бота состоит из нескольких модулей:
- AI-модули
OpenAI (чат, улучшение промптов)
Stability.ai (изображения)
RunwayML (видео) - Бизнес-логика
тарифы
монеты
дневные лимиты
реферальная система - Пользовательская история
сохранение и загрузка контекста
ограничение истории по тарифу - Поддержка (Forum Topics)
автоматическое создание темы
автозакрытие
сообщения пользователь → оператор и обратно - Middleware
SupportLock — блокирует функционал пользователя, если открыта поддержка
UserAndHistory — на каждый хендлер грузит user + историю + сессию БД - Платежи
подписки
монеты
Telegram Payments API - Админ-панель
Каждый модуль автономен, но все связаны через продуманную архитектуру.
🤖 1. OpenAI: ChatGPT прямо в Telegram
Бот использует официальный OpenAI Responses API. Логика полностью вынесена в отдельный модуль:
Как работает запрос
answer = await client.responses.create(
model=model,
input=messages,
max_output_tokens=tariff_config["max_tokens"],
temperature=tariff_config["temp"]
)
- Модель выбирается по категории (chat / english / programmer / psychology).
- Параметры берутся из тарифа пользователя.
- История подгружается автоматически из БД через middleware.
🖼 2. Генерация изображений через Stability.ai
Эта часть бота — настоящее шоу. Пользователь пишет:
«Сделай портрет девушки в стиле аниме»
Бот запускает многоступенчатую цепочку:
- Перевод промпта на английский через OpenAI.
- Выбор эндпоинта: core, sd3, ultra — по тарифу.
- Передача aspect_ratio, negative_prompt, style_preset.
- Асинхронный multipart-POST через aiohttp.
Ключевая функция:
Там видно:
- перевод промптов → translate_to_english()
- разные модели для free/basic/pro/ultra
- кастомизация ratio/negative/style
Пример вызова из хендлера
image_bytes = await generate_image_advanced(
prompt=prompt,
tariff_code=tariff_code,
aspect_ratio="1:1",
negative_prompt=negative_prompt,
style_preset=style,
)
🎬 3. Видео-генерация через RunwayML (text→video / image→video)
Это один из самых сильных модулей проекта.
Бот:
- улучшает промпт через OpenAI;
- нормализует длительность ролика;
- выбирает модель по тарифу;
- создаёт задачу в Runway;
- пулит прогресс;
- скачивает результат;
- отправляет пользователю.
Ключевая функция:
Реальный запрос к Runway выглядит так:
resp = await client.post(
f"{RUNWAY_API_BASE}/tasks",
headers=_build_runway_headers(),
json={
"model": model,
"inputs": {
"prompt": improved_prompt,
"ratio": ratio,
"duration": duration_api,
}
}
)
А затем бот пулит /tasks/{id} пока статус не станет SUCCEEDED.
Это — продакшн-уровень работа с внешним API.
🧠 4. История диалогов: умный контекст
Отдельный middleware отвечает за загрузку истории:
Каждый вызов хендлера получает:
- session – объект БД
- user – модель пользователя
- category – выбранная категория
- history – N последних сообщений (по тарифу)
Пример подстановки истории
messages = build_messages_for_chat(category, message.text, history)
Именно это даёт ощущение «непрерывного диалога», как в ChatGPT.
🛡 5. Техподдержка как в настоящем сервисе
Ты точно видел эти боты:
- «Напиши в поддержку»
- где поддержка — это просто сообщение в личку админу...
Здесь же — настоящий ticketing system, основанный на Telegram Forum Topics.
Когда пользователь открывает поддержку:
- создаётся отдельная тема
- туда пересылаются все его сообщения
- админ отвечает прямо в теме
- юзер получает ответ в ЛС
- бот автоматически ведёт статус тикета
- есть автозакрытие
Пример функции создания темы:
🔒 6. SupportLockMiddleware: запрет работы бота во время поддержки
Когда пользователь пишет в поддержку — весь функционал бота блокируется, чтобы ничего не путалось.
Вот ключ:
Если есть активный тикет:
- любые callback-кнопки отклоняются
- команды типа /start не работают
- единственный разрешённый путь — кнопка «Закрыть поддержку»
Это уровень, который обычные боты почти никогда не реализуют.
💳 7. Платежи, подписки, монеты
Система монет и тарифов в боте — как в полноценном SaaS-продукте.
Пример: списание монет за видео
user.coins -= cost
user.daily_used += 1
await session.commit()
Монеты списываются до начала генерации, чтобы избежать потерь на API.
Тарифы задаются в одном файле, легко расширяются.
📁 8. База данных SQLAlchemy: строгие модели, связи, индексы
Например, модель пользователя:
Есть всё:
- тариф
- монеты
- дневной лимит
- подписка
- рефералы
- история сообщений
🤝 9. Реферальная система, которая реально работает
Каждый пользователь может получить свой /ref и приглашать других.
Приглашённый получает награду, реферер — тоже.
Все данные хранятся в модели Referral.
🧩 10. Меню, клавиатуры, маршрутизация
Кнопки строятся динамически. Например:
А роутеры группируются по доменам: chat_ai, image_ai, runway_video, support, pay, admin.
Это создаёт масштабируемую структуру, в которой легко добавлять новые модули.
🔥 Финал: Почему этот бот — лучший старт для любого AI-проекта
Этот проект — не просто «бот».
Это готовый AI-сервис, который включает:
- полноценную платёжную систему;
- биллинг монет;
- уровни доступа;
- историю диалогов;
- автогенерацию изображений;
- autopilot RunwayML-видео;
- стабильную архитектуру;
- распределение модулей по роутерам;
- надёжную обработку ошибок;
- поддержку как в реальном продукте.
📌 Такой бот может быть коммерческим продуктом сразу после деплоя.
📌 Любой разработчик, прочитав этот разбор, понимает, что код — ценность, а не «скриптик на коленке».
📌 Именно поэтому подобные системы стоят дорого и продаются легко.
🎯 Хочешь получить этот бот?
Если статья тебя вдохновила и ты хочешь:
- запустить свой AI-сервис
- создать коммерческого Telegram-бота
- внедрить OpenAI / Stability / Runway
- заработать на монетизации
— этот проект идеально подходит.
Напиши в комментариях или личные сообщения — и я расскажу, как получить полную версию.
С поддержкой, обновлениями и документацией.