Как импортировать исключения из 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 шт):

Автор решения: Gawain
from aiogram.exceptions import AiogramError
...

try:
    ...
except AiogramError as E:
    print(E)
    ...
...

AiogramError - это базовое исключение, от которого наследуются все остальные.

Документация

Само собой, такое исключение следует использовать тогда и только тогда, когда вы хотите отлавливать все исключения, которые могут быть вызваны aiogram'ом. Если же ваша цель отлавливать только некоторый список, то следует указать его явно, например

from aiogram.exceptions import *
...
try:
    ...
except (TelegramServerError, TelegramRetryAfter):
    ...
...

→ Ссылка