Найти в Дзене

⭐ Мой Telegram-бот, который работает как полноценный AI-сервис. История создания и полный разбор архитектуры (со скрытыми фишками)

Так родилась идея создать Telegram-бота с многоуровневой архитектурой, который: Многие спрашивают: «Как устроен такой проект внутри?» Сегодня — впервые — я подробно раскрою всю архитектуру, покажу реальные фрагменты кода и объясню, как всё работает на уровне продакшна. Эта статья — честная внутренняя кухня: от API-интеграций до базы данных и middleware-магии. Основная структура бота состоит из нескольких модулей: Каждый модуль автономен, но все связаны через продуманную архитектуру. Бот использует официальный OpenAI Responses API. Логика полностью вынесена в отдельный модуль: answer = await client.responses.create(
model=model,
input=messages,
max_output_tokens=tariff_config["max_tokens"],
temperature=tariff_config["temp"]
) Эта часть бота — настоящее шоу. Пользователь пишет: «Сделай портрет девушки в стиле аниме» Бот запускает многоступенчатую цепочку: Ключевая функция: Там видно: image_bytes = await generate_image_advanced(
prompt=prompt,
tariff_code=tariff_c
Оглавление

В какой-то момент большинство 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

Эта часть бота — настоящее шоу. Пользователь пишет:

«Сделай портрет девушки в стиле аниме»

Бот запускает многоступенчатую цепочку:

  1. Перевод промпта на английский через OpenAI.
  2. Выбор эндпоинта: core, sd3, ultra — по тарифу.
  3. Передача aspect_ratio, negative_prompt, style_preset.
  4. Асинхронный 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
  • заработать на монетизации

— этот проект идеально подходит.

Напиши в комментариях или личные сообщения — и я расскажу, как получить полную версию.

С поддержкой, обновлениями и документацией.