Skip to content

Исправлена ошибка при отправке вложения типа file с использованием класса Attachment#21

Merged
love-apples merged 1 commit intolove-apples:mainfrom
nifantyev:main
Feb 6, 2026

Conversation

@nifantyev
Copy link
Copy Markdown
Contributor

При запуске следующего кода для повторной отправки файла, используя токен, была получена ошибка

token = "f9LHodD0cOKrwR1wPI46yDNaG_IJeHF1xOAOdS337FBBnnZImbE..."
attachment = Attachment(
    type=AttachmentType.FILE,
    payload=AttachmentUpload(
    type=UploadType.FILE,
        payload=AttachmentPayload(token=token),
    ),
)
await bot.send_message(
    text="Проверка", user_id=USER_ID, attachments=[attachment]
)

Текст ошибки

maxapi.exceptions.max.MaxApiError: Ошибка от API: self.code=400 self.raw={'code': 'proto.payload', 'message': 'Missing `token` in video attachment'}

Было выяснено, что в Max API отправляется JSON следующего вида.

{"attachments": [{"type": "file", "payload": {"type": "file", "payload": {"token": "f9LHodD0cOKrwR1wPI46yDNaG_IJeHF1xOAOdS337FBBnnZImbE..."}}}], "text": "Проверка", "format": "html"}

Но Max API ожидает другой JSON

{"attachments": [{"type": "file", "payload": {"token": "f9LHodD0cOKrwR1wPI46yDNaG_IJeHF1xOAOdS337FBBnnZImbE..."}}], "text": "Проверка", "format": "html"}

Для исправления этой ошибки была исправлена обработка поля attachments в SendMessage.fetch и EditMessage.fetch

            for att in self.attachments:
                if isinstance(att, InputMedia) or isinstance(
                    att, InputMediaBuffer
                ):
                    HAS_INPUT_MEDIA = True

                    input_media = await process_input_media(
                        base_connection=self, bot=bot, att=att
                    )
                    json["attachments"].append(input_media.model_dump())
+               elif isinstance(att, Attachment) and isinstance(
+                   att.payload, AttachmentUpload
+               ):
+                   json["attachments"].append(att.payload.model_dump())
                else:
                    json["attachments"].append(att.model_dump())

@love-apples love-apples merged commit fb86439 into love-apples:main Feb 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants