Можно ли тестировать бота, не запуская его каждый раз заново, и как смотреть ошибки?
Я постоянно правлю код бота, и каждый раз надо останавливать и заново запускать python bot.py. А ещё когда бот падает, в терминале мелькает красный текст и я не успеваю прочитать. Как удобнее отлаживать бота новичку?
2 ответа
Пара простых вещей сильно облегчают жизнь:
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}")
Так при кривом вводе упадёт только этот хендлер, а бот продолжит работать.
Если надоедает руками перезапускать, можно поставить watchfiles и запускать бота через watchfiles "python bot.py" . — тогда при сохранении файла скрипт сам перезапустится. Не обязательно, но удобно при активной правке кода.