Как обойти блокировку бота flood control RetryAfter в aiogram?

Пишу бота для телеграм, который кидает картинки в группу. Иногда происходит ситуация, что картинок много и бот выхватывает ошибку "flood control". Я понимаю, что можно обработать ошибку try:except или dp.error_handler и бот не прекратит работу, но при возникновении этой ошибки он и прекратит отправлять картинки на время указанное в сообщении.

Можно ли как-то предотвратить вызов этой ошибки, к примеру поставив asyncio.sleep(1) или больше по времени? Есть ли какой-то способ?

Часть кода:

...
for i in photo_list:
    photo = types.InputFile(i)
    try:
        await bot.send_photo(chat_id, photo=photo)
    except RetryAfter:
        await asyncio.sleep(1)
...

Ответы (1 шт):

Автор решения: gil9red

У исключения RetryAfter есть поле timeout

Я бы сделал задержку на значение этого поля

Пример:

for i in photo_list:
    photo = types.InputFile(i)
    try:
        await bot.send_photo(chat_id, photo=photo)
    except RetryAfter as e:
        await asyncio.sleep(e.timeout)
→ Ссылка