Доработана загрузка медиа

This commit is contained in:
Денис Семёнов 2025-07-24 19:37:43 +03:00
parent 48b480ff9e
commit fd9986b02e

View File

@ -3,20 +3,14 @@
import asyncio
from typing import Any, Dict, List, TYPE_CHECKING, Optional
from json import loads as json_loads
from ..utils.message import process_input_media
from ..exceptions.max import MaxUploadFileFailed
from .types.sended_message import SendedMessage
from ..types.attachments.upload import AttachmentPayload, AttachmentUpload
from ..types.errors import Error
from ..types.message import NewMessageLink
from ..types.input_media import InputMedia, InputMediaBuffer
from ..types.attachments.attachment import Attachment
from ..enums.upload_type import UploadType
from ..enums.parse_mode import ParseMode
from ..enums.http_method import HTTPMethod
from ..enums.api_path import ApiPath
@ -29,10 +23,6 @@ if TYPE_CHECKING:
from ..bot import Bot
RETRY_DELAY = 2
ATTEMPTS_COUNT = 5
class SendMessage(BaseConnection):
"""
@ -109,9 +99,11 @@ class SendMessage(BaseConnection):
if not self.link is None: json['link'] = self.link.model_dump()
json['notify'] = self.notify
if not self.parse_mode is None: json['format'] = self.parse_mode.value
await asyncio.sleep(self.bot.after_input_media_delay)
response = None
for attempt in range(ATTEMPTS_COUNT):
for attempt in range(self.ATTEMPTS_COUNT):
response = await super().request(
method=HTTPMethod.POST,
path=ApiPath.MESSAGES,
@ -122,8 +114,8 @@ class SendMessage(BaseConnection):
if isinstance(response, Error):
if response.raw.get('code') == 'attachment.not.ready':
logger_bot.info(f'Ошибка при отправке загруженного медиа, попытка {attempt+1}, жду {RETRY_DELAY} секунды')
await asyncio.sleep(RETRY_DELAY)
logger_bot.info(f'Ошибка при отправке загруженного медиа, попытка {attempt+1}, жду {self.RETRY_DELAY} секунды')
await asyncio.sleep(self.RETRY_DELAY)
continue
return response