Skip to content

Исправлена типизация для опциональных полей, добавлена защита#29

Merged
love-apples merged 5 commits intolove-apples:mainfrom
Olegt0rr:bugfix/optional-message-and-body
Feb 12, 2026
Merged

Исправлена типизация для опциональных полей, добавлена защита#29
love-apples merged 5 commits intolove-apples:mainfrom
Olegt0rr:bugfix/optional-message-and-body

Conversation

@Olegt0rr
Copy link
Copy Markdown
Collaborator

closes #28

…ументация и типы для поддержки случаев, когда body может быть None.
Copilot AI review requested due to automatic review settings February 12, 2026 13:44
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

PR исправляет несоответствия типизации/документации MAX API, где некоторые поля в апдейтах и сообщениях могут приходить null, и добавляет защиту от обращения к ним как к обязательным.

Changes:

  • MessageCallback.message сделан опциональным и добавлены защиты при обогащении/ответе на callback.
  • Message.body сделан опциональным, добавлены явные проверки перед операциями, требующими body.
  • В фильтре команд добавлена защита от message.body is None.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
maxapi/utils/updates.py Добавлены проверки на None при enrichment для callback/message, чтобы не падать на null полях.
maxapi/types/updates/message_callback.py message стал Optional, обновлена логика получения chat_id и формирования callback-ответа.
maxapi/types/message.py body стал Optional, добавлены защиты в reply/forward/edit/delete/pin.
maxapi/filters/command.py Фильтр команд теперь корректно обрабатывает body=None.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread maxapi/types/updates/message_callback.py Outdated
Comment on lines +87 to 103
message_for_callback = MessageForCallback()
message_for_callback.text = new_text

attachments: List[Attachments] = []
if self.message is not None and self.message.body is not None:
attachments = self.message.body.attachments or []

message.text = new_text
message.attachments = self.message.body.attachments
message.link = link
message.notify = notify
message.format = format
message_for_callback.attachments = attachments
message_for_callback.link = link
message_for_callback.notify = notify
message_for_callback.format = format

return await self._ensure_bot().send_callback(
callback_id=self.callback.callback_id,
message=message,
message=message_for_callback,
notification=notification,
)
Copy link

Copilot AI Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MessageCallback.answer() при self.message is None формирует MessageForCallback с пустыми attachments и отправляет его в API. В кейсе удалённого исходного сообщения это, вероятно, должно быть либо запрещено (raise, если запрошено изменение сообщения), либо нужно отправлять только notification без поля message (передав message=None), чтобы не слать в API payload с null/пустыми значениями.

Copilot uses AI. Check for mistakes.
Comment thread maxapi/filters/command.py
Comment thread maxapi/utils/updates.py Outdated
Olegt0rr and others added 4 commits February 12, 2026 16:49
…лом. Проверяется, что методы reply, forward, edit, delete и pin вызывают ValueError при отсутствии тела сообщения.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…щения равно None. Фильтр должен возвращать False.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@love-apples love-apples merged commit b243dd9 into love-apples:main Feb 12, 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.

Несоответствие типа MessageCallback документации

3 participants