Botxona

Ошибки и решения (топ-15)

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

Мой бот вообще не отвечает, что делать?

Проверьте возможные причины в порядке вероятности: (1) бот может спать — задержка первого сообщения на несколько секунд нормальна (о спящем режиме); (2) токен может быть отозван (revoked) — проверьте в BotFather; (3) бот мог упасть (crashed) — посмотрите статус бота в панели; (4) у бота раньше был установлен webhook, а Botxona использует long-polling — см. следующий пункт.

У моего бота раньше был установлен webhook, что теперь будет?

Если бот раньше где-то вызывал setWebhook, Telegram продолжает пытаться отправлять сообщения на тот (уже не работающий) адрес, и обновления не доходят до Botxona. Решение: при первом запуске вызовите deleteWebhook (однократно, вреда не будет):

await bot.delete_webhook(drop_pending_updates=False)

Botxona сама работает через long-polling — ваш код не должен вызывать setWebhook.

Что означает «409 Conflict: terminated by other getUpdates request»?

Это значит, что к одному токену одновременно пытаются подключиться из двух мест (например, бот запущен и на вашем компьютере, и в Botxona). Решение: остановите бота в другом месте (компьютер, другой сервер) — на один токен должна приходиться только одна работающая копия.

Что значит «ModuleNotFoundError: No module named 'X'»?

Ваш код использует библиотеку X, но её нет в requirements.txt (или она указана под неправильным именем). Решение: добавьте в requirements.txt строку X==версия и задеплойте заново (6 правил — пункт 3).

Почему появляется ошибка «Read-only file system»?

Ваш код пытается писать за пределами DATA_DIR — в продакшн-контейнере эти места доступны только для чтения. Решение: направьте все операции записи внутрь DATA_DIR (подробнее).

Бот отключается из-за нехватки памяти (OOM)

На каждом тарифе есть лимит RAM (Ограничения). Если бот использует больше памяти, чем позволяет лимит, контейнер принудительно останавливается и перезапускается. Решение: не храните большие списки в памяти (записывайте в базу), обрабатывайте изображения/файлы потоково (stream) или перейдите на тариф с большим объёмом RAM.

В BotFather бот работает, а в Botxona выдаёт ошибку

Скорее всего, токен скопирован неправильно (с пробелом или не полностью) — введите его заново по инструкции на странице Получение токена.

При деплое этап «Build» красный

Библиотека не установилась или в коде синтаксическая ошибка. Прочитайте последние строки логов в отчёте — обычно там указана точная причина (например, библиотека с несовместимой версией).

Ошибка на этапе smoke-test

Бот мог упасть сразу после запуска или получить 401 (неверный токен). Проверьте токен и прочитайте строку с ошибкой в логах.

Ошибка «поддерживаются только открытые ссылки» при загрузке из GitHub

Ваш репозиторий private (закрытый). Сделайте его открытым (public) в настройках GitHub или загрузите код через ZIP (подробнее).

Ошибка «превышен размер» при загрузке ZIP

Архив больше 20 МБ или его распакованный размер превышает 100 МБ. Не добавляйте в архив лишние папки вроде node_modules, venv, .git (подробнее).

Мой платёж не подтверждается

Обычно подтверждение приходит в течение нескольких минут. Если сумма не совпала точно (вы округлили уникальную добавку в сумах), администратор проверит перевод вручную — немного подождите или напишите в поддержку.

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

Это нормально — пробуждение уснувшего бота занимает несколько секунд (у ботов на Python примерно 3–6 секунд), а активный бот отвечает сразу (подробнее). Если бот должен всегда отвечать быстро, переключите его в режим «Всегда включён».

Изменил переменную окружения, но она не действует

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

Бот не открывается у другого пользователя (передан клиенту)

Клиент сначала должен нажать /start в боте платформы (вроде @BotxonaBot) — иначе система его не узнает и запрос на передачу до него не дойдёт.

Если ничего не помогло

Покажите логи AI (как это сделать) или обратитесь в службу поддержки.