← Все вопросы

Можно ли тестировать бота, не запуская его каждый раз заново, и как смотреть ошибки?

Задан 34 месяца назад1к просмотров2 ответа
4

Я постоянно правлю код бота, и каждый раз надо останавливать и заново запускать python bot.py. А ещё когда бот падает, в терминале мелькает красный текст и я не успеваю прочитать. Как удобнее отлаживать бота новичку?

2 ответа

8
✓ Принятый ответ — помог автору

Пара простых вещей сильно облегчают жизнь:

1. Логирование вместо угадывания. Включи логи — тогда aiogram будет показывать, какие апдейты приходят и где ошибка:

import logging
logging.basicConfig(level=logging.INFO)

Теперь в терминале видно, что происходит, и трейсбек ошибки не «мелькает», а остаётся.

2. Перезапуск — это нормально. В aiogram нет авто-перезагрузки из коробки, поэтому после правок действительно надо перезапустить скрипт (Ctrl+C, потом снова python bot.py). Это быстро и привычно.

3. Ошибки лови, чтобы бот не падал целиком. Оберни рискованный код в try/except:

@dp.message(Command("div"))
async def div(message: Message):
    try:
        x = 10 / int(message.text.split()[-1])
        await message.answer(str(x))
    except Exception as e:
        await message.answer(f"Ошибка: {e}")

Так при кривом вводе упадёт только этот хендлер, а бот продолжит работать.

3

Если надоедает руками перезапускать, можно поставить watchfiles и запускать бота через watchfiles "python bot.py" . — тогда при сохранении файла скрипт сам перезапустится. Не обязательно, но удобно при активной правке кода.

Ваш ответ

, чтобы ответить на вопрос.