Как импортировать исключения из aiogram и отловить их?
Есть бот на aiogram 3.0.0b8 который должен рассылать сообщения. Но у тг есть же ограничения.. и надо их отловить, не упасть, подождать и снова попробовать отправить
Попробовал так:
from aiogram.utils import exceptions
...
try:
await bot.send_message(user.user_id_tg, text=user.success_msg, reply_markup=keyboard_3)
except exceptions.RetryAfter as e:
await asyncio.sleep(e.timeout)
await bot.send_message(user.user_id_tg, text=user.success_msg, reply_markup=keyboard_3)
Но интерпретатор ругается: ImportError: cannot import name 'exceptions' from 'aiogram.utils'
Попробовал так импортировать:
from aiogram.utils.exceptions import RetryAfter
И тоже ругается: ImportError: cannot import name 'exceptions' from 'aiogram.utils'
Этоm код выполняется функцией по расписанию
# Сообщения по расписанию
scheduler = AsyncIOScheduler(timezone="Europe/Moscow")
scheduler.add_job(time_msg.start_time_push, trigger='cron', hour=16,
minute=48, start_date=datetime.now(),
kwargs={'bot': bot})
scheduler.start()
В документации Aiogram по этому вопросу ничего не понял, если честно) Импорты нагуглил...
Ответы (1 шт):
from aiogram.exceptions import AiogramError
...
try:
...
except AiogramError as E:
print(E)
...
...
AiogramError - это базовое исключение, от которого наследуются все остальные.
Само собой, такое исключение следует использовать тогда и только тогда, когда вы хотите отлавливать все исключения, которые могут быть вызваны aiogram'ом. Если же ваша цель отлавливать только некоторый список, то следует указать его явно, например
from aiogram.exceptions import *
...
try:
...
except (TelegramServerError, TelegramRetryAfter):
...
...