Как читать результат проверки (🟢/🟡/🔴)
Каждый раз, когда вы загружаете код через ZIP или GitHub, Botxona проводит автоматическую проверку и показывает результат по каждому пункту:
- 🟢 Зелёный (pass) — всё в порядке, ничего делать не нужно.
- 🟡 Жёлтый (warn) — бот всё равно запустится, но есть момент, на который стоит обратить внимание.
- 🔴 Красный (fail) — серьёзная проблема, бот не будет собран. Нужно исправить проблему и загрузить код заново.
Если результат жёлтый или красный, под отчётом появляется кнопка «AI-промпт для исправления» — скопируйте его и отдайте ChatGPT/Claude/Gemini: они объяснят проблему и вернут исправленный код.
Проверка архива
Проверяет, что размер ZIP-файла, количество и типы файлов соответствуют установленным ограничениям. Красный — архив слишком большой или содержит запрещённый тип файла (например .exe).
При подключении через GitHub этот этап называется «Получение исходного кода». Красный — репозиторий не найден, он закрытый (private) или указанной ветки нет. Откройте ссылку в браузере и проверьте, сделайте репозиторий открытым или загрузите код в ZIP. AI-промпт в этом случае не нужен — проблема не в коде, а в ссылке.
Определение языка
Определяет, на Python, Node.js или Go написан проект. Красный — в корне архива не найден requirements.txt (Python), package.json (Node.js) или go.mod (Go). Чаще всего причина в том, что эти файлы не попали в архив или ZIP сделан не из той папки. Смотрите инструкцию о том, как правильно подготовить архив.
1. Токен только из BOT_TOKEN
Проверяет, нет ли в коде открытого (жёстко прописанного) токена. Если найден — красный, потому что это угроза безопасности. Исправление: 6 правил — пункт 1.
2. Подключение к Telegram API
Всегда зелёный — автоматически. Как бы бот ни подключался к Telegram (даже к api.telegram.org с настройками библиотеки по умолчанию), запросы проходят через прокси платформы, поэтому ничего настраивать не нужно. Подробнее: 6 правил — пункт 2.
3. Версии библиотек
Проверяет наличие requirements.txt, package.json или go.mod (+ go.sum) и то, что версии указаны точно. Если файла нет вообще — красный. Если есть библиотеки без версий — жёлтый. В Go отсутствие go.sum тоже даёт жёлтый (сборка сама запускает go mod tidy, но go.sum лучше добавить). Исправление: 6 правил — пункт 3.
4. Точка входа
Определяет, какой файл запускать (main.py, bot.py, скрипт start в package.json, в Go — пакет main в корне (main.go) или единственная cmd/<имя>/, либо botxona.yaml). Если найдено несколько кандидатов — жёлтый (выбирается первый, но для ясности добавьте botxona.yaml). Если ничего не найдено — красный. Исправление: botxona.yaml.
5. DATA_DIR
Если бот записывает файлы, проверяет, что используется DATA_DIR. Внешняя база данных (DATABASE_URL и т. п.) тоже считается «pass» (ответственность за резервные копии — на вас). Запись прямо на диск без DATA_DIR — жёлтый. Исправление: 6 правил — пункт 5.
6. .env.example
Проверяет, что все переменные окружения, которые использует бот, задокументированы в .env.example. Если файла нет или часть переменных пропущена — жёлтый (бот работает, но форма настроек в панели может оказаться неполной — недостающие переменные можно добавить вручную). Исправление: 6 правил — пункт 6.
Сканер безопасности
В коде ищутся вредоносные шаблоны: майнинг, reverse-shell, обфусцированный exec/eval, curl | sh и т. п. Если такое найдено — красный, и сборка останавливается (это правило не обсуждается). Некоторые безвредные, но требующие внимания случаи (например SMTP, порт 25) — жёлтый. Полный список: Безопасность (техническое).
Сборка (Build)
Для кода автоматически создаётся Dockerfile и собирается контейнер. Если сборка завершилась ошибкой (например, библиотека не установилась) — красный, и последние строки логов показываются в отчёте.
Smoke-test
После успешной сборки бот запускается в тестовом режиме на несколько секунд (обычно 30 секунд): проверяется, что контейнер не падает сразу и памяти хватает. Если на этом этапе возникает проблема, бот не выходит в продакшн, а причина показывается в отчёте.
Почему smoke-test важен?
Некоторые ошибки видны только после запуска (например, неправильный импорт или нерабочий токен). Smoke-test ловит такие ошибки до того, как они доберутся до реальных пользователей.
Следующий шаг
Если результат жёлтый или красный: скопируйте AI-промпт для исправления из отчёта и отдайте его AI, либо исправьте вручную по 6 правилам и загрузите заново. Если всё в порядке: протестируйте бота, а затем переходите к оплате.