Вайб-кодинг: как я за 3 месяца прошёл путь от «код не работает» до бота с реальным доходом. Чек-лист из 12 пунктов, который сэкономит вам недели

Я потратил три месяца, чтобы понять одну простую вещь: ChatGPT — классный помощник, но это не про продакшен-код. Зато связка Claude Code + VPS в Европе + чёткое техническое задание даёт рабочий бот за вечер. Главное — я сформировал чек-лист из 12 обязательных компонентов, без которых любой бот развалится при первых сотне пользователей. Оценка «готовности к продакшену» у моего кода выросла с 2/10 до 8/10. Ниже — честная история и конкретный список того, что действительно нужно.

Как всё начиналось: провал на старте

Как и большинство, я начал с ChatGPT: «Сделай мне бота для Telegram». Он сгенерировал код, подсказал, какую среду поставить — я скопировал, запустил… и увидел 47 ошибок. Исправил — осталось 23. Через неделю у меня получился какой-то «франкенштейн»: запускался, но падал каждые 30 минут. О приёме платежей и выдержке нагрузки речь вообще не шла.

Знакомая картина? У меня точно была: красиво на бумаге, но не готово к реальной жизни.

Поворот: Claude Code и работа в терминале

Перепробовав разные AI-инструменты и «конструкторы», я натолкнулся на Claude. Сначала — веб-версия, неудобно: копировать, вставлять, тестировать локально. Затем — Claude Code, который работает прямо в терминале. Это изменило процесс: объяснил задачу в консоли — получил рабочие шаги, куски кода и понятную логику.

Но одного ИИ мало — нужен сервер, на котором это будет стабильно жить. Я взял VPS в Европе (мне важно было, чтобы API внешних сервисов были доступны), поднял среду и начал развёртывать.

VPS + Claude Code = первый рабочий прототип

Мои действия были простые и прямые:

  • арендовал VPS (в Европе, чтобы не было проблем с доступом к API нейросетей),
  • подключился по SSH и работал в терминале с Claude Code,
  • за вечер собрал бота, который принимал сообщения, работал с фото и вызывал модель AI.

Через пару тестов бот отвечал. Радость была реальной — но радость преждевременная: я попросил Claude провести аудит кода, и он дал оценку «2 из 10».

Почему «2 из 10» — и что это значит

Код работал визуально, но был неготов к реальной эксплуатации. Основные проблемы:

  • отсутствие обработки ошибок — один сбой и сервис умирает;
  • нет постоянного хранилища — данные теряются при перезапуске;
  • отсутствие контроля нагрузки — один пользователь может положить сервер;
  • секреты (API-токены) прямо в коде — риск утечки;
  • отсутствие логов и мониторинга — непонятно, что идёт не так;
  • отсутствие механизма корректного завершения задач при перезапуске сервера.

Красивый интерфейс и «работающий пример» — это только начало. Продакшен требует дисциплины.

Мой чек-лист: 12 вещей, которые обязан иметь любой бот/веб-приложение

После практики я собрал чек-лист — даю его тебе как костяк, который сам передаю Claude перед началом каждого нового проекта. Когда я его добавил — оценка кода выросла до 8/10.

  1. База данных (PostgreSQL) Для пользователей, истории действий, заказов и платежей — всё должно выживать после рестарта.
  2. Переменные окружения (.env) Никаких токенов в репозитории. Все ключи — в окружении, в защищённом хранилище.
  3. Кэширование (Redis) Сессии, rate limits, очередь задач — Redis ускоряет и стабилизирует работу.
  4. Rate limiting (ограничение запросов) Защита от случайного или злонамеренного перегруза — обязательна.
  5. Обработка ошибок и retry-логика Внешние API падают. Бот должен корректно повторять операции и не «умирать».
  6. Логирование и метрики Логи, трассировка, метрики времени отклика — без этого дебаг превращается в гадание.
  7. Graceful shutdown При перезапуске процесс должен корректно завершить текущие задачи.
  8. Менеджер процессов (PM2 / systemd) Автоматический рестарт, мониторинг и простота деплоя — экономят кучу времени.
  9. Безопасность для веб-части XSS, CSRF, инъекции — базовый набор защит должен быть настроен сразу.
  10. Webhook для платежей с проверкой подписи Принимаем деньги — проверяем подписи, отслеживаем статусы платежей.
  11. Миграции БД (Alembic / Flyway) Менять схему безопасно — без потери данных и с откатом при ошибках.
  12. Middleware для общей логики Общие проверки (черный список, авторизация, throttling) — в одном месте, а не по коду.

Что получилось в итоге

После внедрения этих пунктов «Эхо Времени» перестал быть демо-проекта. Сейчас сервис:

  • стабильно обрабатывает фотографии (реставрация, колоризация через AI),
  • принимает платежи (корректно, с проверкой подписи),
  • держит нагрузку благодаря Redis и rate limiting,
  • корректно завершает задачи при перезапусках (graceful shutdown + менеджер процессов),
  • имеет веб-версию на React и надёжный backend.

Результат — реальный рабочий продукт, который можно показывать пользователям и масштабировать.

Заключение

Если у вас есть идея и вы не разработчик — это не приговор. Но важно понимать: прототип и продакшен — разные миры. AI помогает быстро прототипировать, Claude Code ускоряет разработку прямо в терминале, но без инфраструктуры, безопасности и дисциплины проект не проживёт.

Мой путь — это про сочетание: идея + ИИ-помощник + минимально необходимая инженерная дисциплина. Результат того стоит: бот, который не просто «работает», а служит людям.

Вот универсальный промт на создания тг бота

Создай Telegram-бота: [ОПИСАНИЕ ФУНКЦИОНАЛА] ОБЯЗАТЕЛЬНЫЕ ТРЕБОВАНИЯ: 1. БАЗА ДАННЫХ - PostgreSQL через asyncpg - Alembic для миграций - Таблицы: users (telegram_id, username, created_at, is_banned, balance), payments (user_id, amount, status, provider_payment_id, created_at) 2. КОНФИГУРАЦИЯ - Все секреты в .env: BOT_TOKEN, DATABASE_URL, REDIS_URL, все API_KEYS - Загрузка через python-dotenv - Pydantic Settings для валидации конфига 3. КЭШИРОВАНИЕ И СОСТОЯНИЯ - Redis для кэша, FSM-состояний, rate limiting - TTL для кэша: 5 минут по умолчанию 4. RATE LIMITING - 5 запросов/минуту на тяжёлые операции (генерация, API-вызовы) - 30 запросов/минуту на обычные действия - Хранение счётчиков в Redis 5. ОБРАБОТКА ОШИБОК - try-except на все внешние вызовы - Retry с exponential backoff (2, 4, 8 сек), максимум 3 попытки - Пользователь видит понятные сообщения, не трейсбеки 6. ЛОГИРОВАНИЕ - loguru или стандартный logging - В файл logs/bot.log + консоль - Ротация логов по размеру (10MB) - Логировать: ошибки, платежи, действия админов, старт/стоп 7. GRACEFUL SHUTDOWN - Обработка SIGTERM, SIGINT - Закрытие соединений с БД и Redis - Завершение текущих задач перед выходом 8. PM2 - ecosystem.config.js - Автоперезапуск при падении - Лимит памяти 500MB - Логи в отдельные файлы 9. БЕЗОПАСНОСТЬ - Проверка подписи webhook (если есть платежи) - Whitelist IP для webhook - Санитизация пользовательского ввода - Параметризованные SQL-запросы 10. MIDDLEWARE - BanMiddleware — проверка бана перед обработкой - LoggingMiddleware — логирование всех действий - ThrottlingMiddleware — rate limiting 11. СТРУКТУРА ПРОЕКТА /bot /handlers — обработчики по модулям /services — бизнес-логика /middleware — middleware /keyboards — клавиатуры /states — FSM состояния /database /models.py — SQLAlchemy модели /connection.py — подключение /alembic — миграции /config.py — настройки /main.py — точка входа .env.example — пример переменных ecosystem.config.js requirements.txt 12. ДОПОЛНИТЕЛЬНО (если нужны платежи) - ЮKassa интеграция - Webhook с проверкой IP (185.71.76.0/27, 185.71.77.0/27) и HMAC-подписи - Таблица payments со статусами: pending, succeeded, failed, refunded Стек: Python 3.11+, aiogram 3.x, asyncpg, redis, aiohttp

А тут универсальный промт на проведения аудита

Проведи полный аудит кода бота. Оцени по шкале от 1 до 10. ПРОВЕРЬ КАЖДЫЙ ПУНКТ: 1. БАЗА ДАННЫХ - [ ] Используется PostgreSQL/SQLite (не хранение в памяти) - [ ] Есть миграции (Alembic) - [ ] Соединения закрываются корректно - [ ] Параметризованные запросы (защита от SQL injection) 2. КОНФИГУРАЦИЯ - [ ] Секреты в .env, НЕ в коде - [ ] .env добавлен в .gitignore - [ ] Есть .env.example 3. КЭШИРОВАНИЕ - [ ] Redis для кэша/сессий/FSM - [ ] TTL на кэшированные данные 4. RATE LIMITING - [ ] Ограничение запросов на тяжёлые операции - [ ] Ограничение по пользователю 5. ОБРАБОТКА ОШИБОК - [ ] Все внешние вызовы в try-except - [ ] Retry логика для API - [ ] Пользователь не видит трейсбеки 6. ЛОГИРОВАНИЕ - [ ] Логи пишутся в файл - [ ] Логируются ошибки и важные события - [ ] Есть ротация логов 7. GRACEFUL SHUTDOWN - [ ] Обработка SIGTERM/SIGINT - [ ] Корректное закрытие соединений 8. ПРОЦЕСС-МЕНЕДЖЕР - [ ] PM2/systemd конфигурация - [ ] Автоперезапуск при падении 9. БЕЗОПАСНОСТЬ - [ ] Нет хардкода секретов - [ ] Валидация входных данных - [ ] Для webhook: проверка подписи/IP 10. АРХИТЕКТУРА - [ ] Разделение на handlers/services/middleware - [ ] Нет дублирования кода - [ ] Middleware для общей логики 11. ЗАВИСИМОСТИ - [ ] requirements.txt с версиями - [ ] Нет устаревших пакетов 12. УСТОЙЧИВОСТЬ - [ ] Бот переживает перезагрузку сервера - [ ] Данные не теряются при крэше ФОРМАТ ОТВЕТА: 1. Общая оценка: X/10 2. Критические проблемы (блокеры для продакшена) 3. Серьёзные проблемы (нужно исправить) 4. Рекомендации (желательно) 5. Что сделано хорошо 6. Конкретные файлы и строки с проблемами
1
1
Начать дискуссию