Перейти к содержанию

Message Module

MarkupElement

Bases: BaseModel

Модель элемента разметки текста.

Attributes:

Name Type Description
type TextStyle

Тип разметки.

from_ int

Начальная позиция разметки в тексте.

length int

Длина разметки.

Bases: MarkupElement

Модель разметки ссылки.

Attributes:

Name Type Description
url str | None

URL ссылки. Может быть None.

MarkupUserMention

Bases: MarkupElement

Модель разметки упоминания пользователя.

Attributes:

Name Type Description
user_id int | None

Идентификатор пользователя. Может быть None.

user_link str | None

Ссылка на пользователя. Может быть None.

Recipient

Bases: BaseModel

Модель получателя сообщения.

Attributes:

Name Type Description
user_id int | None

Идентификатор пользователя. Может быть None.

chat_id int | None

Идентификатор чата. Может быть None.

chat_type ChatType

Тип получателя (диалог или чат).

MessageBody

Bases: BaseModel

Модель тела сообщения.

Attributes:

Name Type Description
mid str

Уникальный идентификатор сообщения.

seq int

Порядковый номер сообщения.

text str | None

Текст сообщения. Может быть None.

attachments list[Attachments] | None

Список вложений. По умолчанию пустой список.

markup list[MarkupUserMention | MarkupLink | MarkupElement] | None

Список элементов разметки. По умолчанию пустой список.

html_text property

Преобразует исходный текст сообщения в HTML строку, основываясь на разметке markup с помощью класса Text.

md_text property

Преобразует исходный текст сообщения в Markdown строку, основываясь на разметке markup с помощью класса Text.

text_decorated property

Разбирает текст и разметку сообщения в дерево форматирования. Если текст отсутствует, возвращает None. Если разметка отсутствует, возвращает Text с простым текстом.

Returns:

Type Description
Text | None

Optional[Text]: Дерево форматирования или None.

MessageStat

Bases: BaseModel

Модель статистики сообщения.

Attributes:

Name Type Description
views int

Количество просмотров сообщения.

LinkedMessage

Bases: BaseModel

Модель связанного сообщения.

Attributes:

Name Type Description
type MessageLinkType

Тип связи.

sender User | None

Отправитель связанного сообщения, может быть None, если связанное сообщение отправлено каналом https://github.com/love-apples/maxapi/issues/11.

chat_id int | None

Идентификатор чата. Может быть None.

message MessageBody

Тело связанного сообщения.

Message

Bases: BaseModel, BotMixin, PeerShortcutMixin, ChatActionShortcutMixin

Модель сообщения.

Attributes:

Name Type Description
sender User | None

Отправитель сообщения, может быть None, если сообщение отправлено каналом https://github.com/love-apples/maxapi/discussions/14.

recipient Recipient

Получатель сообщения.

timestamp int

Временная метка сообщения.

link LinkedMessage | None

Связанное сообщение. Может быть None.

body MessageBody | None

Содержимое сообщения. Текст + вложения. Может быть None, если сообщение содержит только пересланное сообщение

stat MessageStat | None

Статистика сообщения. Может быть None.

url str | None

URL сообщения. Может быть None.

bot Any | None

Объект бота, исключается из сериализации.

url property

Прямая ссылка на сообщение в интерфейсе MAX.

Для каналов возвращается ссылка, полученная от API. Для диалогов и групповых чатов ссылка строится из body.mid.

answer(text=None, attachments=None, link=None, format=None, parse_mode=None, *, notify=None, disable_link_preview=None, sleep_after_input_media=True) async

Отправляет сообщение (автозаполнение chat_id, user_id).

Parameters:

Name Type Description Default
text str | None

Текст ответа. Может быть None.

None
attachments list[Attachment | InputMedia | InputMediaBuffer | AttachmentUpload] | None

Список вложений. Может быть None.

None
link NewMessageLink | None

Связь с другим сообщением. Может быть None.

None
format TextFormat | None

Режим форматирования текста. Может быть None.

None
parse_mode ParseMode | None

Режим форматирования текста. Может быть None.

None
notify bool | None

Флаг отправки уведомления. По умолчанию True.

None
disable_link_preview bool | None

Флаг генерации превью.

None
sleep_after_input_media bool | None

Флаг задержки после отправки вложений типа InputMedia. По умолчанию True.

True

Returns:

Type Description
SendedMessage | None

Optional[SendedMessage]: Результат выполнения метода send_message бота.

Source code in maxapi/types/message.py
async def answer(
    self,
    text: str | None = None,
    attachments: list[
        Attachment | InputMedia | InputMediaBuffer | AttachmentUpload
    ]
    | None = None,
    link: NewMessageLink | None = None,
    format: TextFormat | None = None,
    parse_mode: ParseMode | None = None,
    *,
    notify: bool | None = None,
    disable_link_preview: bool | None = None,
    sleep_after_input_media: bool | None = True,
) -> SendedMessage | None:
    """
    Отправляет сообщение (автозаполнение chat_id, user_id).

    Args:
        text: Текст ответа. Может быть None.
        attachments: Список вложений. Может быть None.
        link: Связь с другим сообщением.
            Может быть None.
        format: Режим форматирования текста.
            Может быть None.
        parse_mode: Режим форматирования текста.
            Может быть None.
        notify: Флаг отправки уведомления. По умолчанию True.
        disable_link_preview: Флаг генерации превью.
        sleep_after_input_media: Флаг задержки
            после отправки вложений типа InputMedia. По умолчанию True.

    Returns:
        Optional[SendedMessage]: Результат выполнения метода
            send_message бота.
    """

    return await self.send(
        text=text,
        attachments=attachments,
        link=link,
        notify=notify,
        format=format,
        parse_mode=parse_mode,
        disable_link_preview=disable_link_preview,
        sleep_after_input_media=sleep_after_input_media,
    )

reply(text=None, attachments=None, format=None, parse_mode=None, *, notify=None, disable_link_preview=None, sleep_after_input_media=True) async

Отправляет ответное сообщение (автозаполнение chat_id, user_id, link).

Parameters:

Name Type Description Default
text str | None

Текст ответа. Может быть None.

None
attachments list[Attachment | InputMedia | InputMediaBuffer | AttachmentUpload] | None

Список вложений. Может быть None.

None
notify bool | None

Флаг отправки уведомления. По умолчанию True.

None
format TextFormat | None

Режим форматирования текста. Может быть None.

None
parse_mode ParseMode | None

Режим форматирования текста. Может быть None.

None
disable_link_preview bool | None

Флаг генерации превью.

None
sleep_after_input_media bool | None

Флаг задержки после отправки вложений типа InputMedia. По умолчанию True.

True

Returns:

Type Description
SendedMessage | None

Optional[SendedMessage]: Результат выполнения метода send_message бота.

Source code in maxapi/types/message.py
async def reply(
    self,
    text: str | None = None,
    attachments: list[
        Attachment | InputMedia | InputMediaBuffer | AttachmentUpload
    ]
    | None = None,
    format: TextFormat | None = None,
    parse_mode: ParseMode | None = None,
    *,
    notify: bool | None = None,
    disable_link_preview: bool | None = None,
    sleep_after_input_media: bool | None = True,
) -> SendedMessage | None:
    """
    Отправляет ответное сообщение (автозаполнение chat_id, user_id, link).

    Args:
        text: Текст ответа. Может быть None.
        attachments: Список вложений. Может быть None.
        notify: Флаг отправки уведомления. По умолчанию True.
        format: Режим форматирования текста.
            Может быть None.
        parse_mode: Режим форматирования текста.
            Может быть None.
        disable_link_preview: Флаг генерации превью.
        sleep_after_input_media: Флаг задержки
            после отправки вложений типа InputMedia. По умолчанию True.

    Returns:
        Optional[SendedMessage]: Результат выполнения метода
            send_message бота.
    """

    if self.body is None:
        msg = "Невозможно ответить: поле body отсутствует у сообщения"
        raise ValueError(msg)

    if self.recipient.chat_id is None:
        msg = "Невозможно ответить: chat_id отсутствует"
        raise ValueError(msg)

    return await self._ensure_bot().send_message(
        chat_id=self.recipient.chat_id,
        user_id=self.recipient.user_id,
        text=text,
        attachments=attachments,
        link=NewMessageLink(type=MessageLinkType.REPLY, mid=self.body.mid),
        notify=notify,
        format=format,
        parse_mode=parse_mode,
        disable_link_preview=disable_link_preview,
        sleep_after_input_media=sleep_after_input_media,
    )

forward(chat_id, user_id=None, attachments=None, format=None, parse_mode=None, *, notify=None, disable_link_preview=None, sleep_after_input_media=True) async

Пересылает отправленное сообщение в указанный чат. (автозаполнение link)

Parameters:

Name Type Description Default
chat_id int | None

ID чата для отправки (обязателен, если не указан user_id)

required
user_id int | None

ID пользователя для отправки (обязателен, если не указан chat_id). По умолчанию None

None
attachments list[Attachment | InputMedia | InputMediaBuffer | AttachmentUpload] | None

Список вложений. Может быть None.

None
notify bool | None

Флаг отправки уведомления. По умолчанию True.

None
format TextFormat | None

Режим форматирования текста. Может быть None.

None
parse_mode ParseMode | None

Режим форматирования текста. Может быть None.

None
disable_link_preview bool | None

Флаг генерации превью.

None
sleep_after_input_media bool | None

Флаг задержки после отправки вложений типа InputMedia. По умолчанию True.

True

Returns:

Type Description
SendedMessage | None

Optional[SendedMessage]: Результат выполнения метода send_message бота.

Source code in maxapi/types/message.py
async def forward(
    self,
    chat_id: int | None,
    user_id: int | None = None,
    attachments: list[
        Attachment | InputMedia | InputMediaBuffer | AttachmentUpload
    ]
    | None = None,
    format: TextFormat | None = None,
    parse_mode: ParseMode | None = None,
    *,
    notify: bool | None = None,
    disable_link_preview: bool | None = None,
    sleep_after_input_media: bool | None = True,
) -> SendedMessage | None:
    """
    Пересылает отправленное сообщение в указанный чат.
    (автозаполнение link)

    Args:
        chat_id: ID чата для отправки (обязателен, если не
            указан user_id)
        user_id: ID пользователя для отправки (обязателен,
            если не указан chat_id). По умолчанию None
        attachments: Список вложений. Может быть None.
        notify: Флаг отправки уведомления. По умолчанию True.
        format: Режим форматирования
            текста. Может быть None.
        parse_mode: Режим форматирования
            текста. Может быть None.
        disable_link_preview: Флаг генерации превью.
        sleep_after_input_media: Флаг задержки
            после отправки вложений типа InputMedia. По умолчанию True.

    Returns:
        Optional[SendedMessage]: Результат выполнения метода
            send_message бота.
    """

    if self.body is None:
        msg = "Невозможно переслать: поле body отсутствует у сообщения"
        raise ValueError(msg)

    return await self._ensure_bot().send_message(
        chat_id=chat_id,
        user_id=user_id,
        attachments=attachments,
        link=NewMessageLink(
            type=MessageLinkType.FORWARD, mid=self.body.mid
        ),
        notify=notify,
        format=format,
        parse_mode=parse_mode,
        disable_link_preview=disable_link_preview,
        sleep_after_input_media=sleep_after_input_media,
    )

edit(text=None, attachments=None, link=None, format=None, parse_mode=None, *, notify=True, sleep_after_input_media=True) async

Редактирует текущее сообщение.

Parameters:

Name Type Description Default
text str | None

Новый текст сообщения. Может быть None.

None
attachments list[Attachment | InputMedia | InputMediaBuffer | AttachmentUpload] | list[Attachments] | None

Новые вложения. Может быть None.

None
link NewMessageLink | None

Новая связь с сообщением. Может быть None.

None
format TextFormat | None

Режим форматирования текста. Может быть None.

None
parse_mode ParseMode | None

Режим форматирования текста. Может быть None.

None
notify bool

Флаг отправки уведомления. По умолчанию True.

True
sleep_after_input_media bool | None

Флаг задержки после отправки вложений типа InputMedia. По умолчанию True.

True

Returns: Optional[EditedMessage]: Результат выполнения метода edit_message бота.

Source code in maxapi/types/message.py
async def edit(
    self,
    text: str | None = None,
    attachments: list[
        Attachment | InputMedia | InputMediaBuffer | AttachmentUpload
    ]
    | list[Attachments]
    | None = None,
    link: NewMessageLink | None = None,
    format: TextFormat | None = None,
    parse_mode: ParseMode | None = None,
    *,
    notify: bool = True,
    sleep_after_input_media: bool | None = True,
) -> EditedMessage | None:
    """
    Редактирует текущее сообщение.

    Args:
        text: Новый текст сообщения. Может быть None.
        attachments: Новые вложения. Может быть None.
        link: Новая связь с сообщением.
            Может быть None.
        format: Режим форматирования текста.
            Может быть None.
        parse_mode: Режим форматирования текста.
            Может быть None.
        notify: Флаг отправки уведомления. По умолчанию True.
        sleep_after_input_media: Флаг задержки
            после отправки вложений типа InputMedia. По умолчанию True.
    Returns:
        Optional[EditedMessage]: Результат выполнения метода
            edit_message бота.
    """

    if link is None and self.link:
        link = NewMessageLink(
            type=self.link.type, mid=self.link.message.mid
        )

    if (
        attachments is None
        and self.body is not None
        and self.body.attachments
    ):
        attachments = self.body.attachments

    if self.body is None:
        msg = "Невозможно редактировать: поле body отсутствует у сообщения"
        raise ValueError(msg)

    return await self._ensure_bot().edit_message(
        message_id=self.body.mid,
        text=text,
        attachments=attachments,
        link=link,
        notify=notify,
        format=format,
        parse_mode=parse_mode,
        sleep_after_input_media=sleep_after_input_media,
    )

delete() async

Удаляет текущее сообщение.

Returns:

Name Type Description
DeletedMessage DeletedMessage

Результат выполнения метода delete_message бота.

Source code in maxapi/types/message.py
async def delete(self) -> DeletedMessage:
    """
    Удаляет текущее сообщение.

    Returns:
        DeletedMessage: Результат выполнения метода delete_message бота.
    """

    if self.body is None:
        msg = "Невозможно удалить: поле body отсутствует у сообщения"
        raise ValueError(msg)

    return await self._ensure_bot().delete_message(
        message_id=self.body.mid,
    )

pin(*, notify=True) async

Закрепляет текущее сообщение в чате.

Parameters:

Name Type Description Default
notify bool

Флаг отправки уведомления. По умолчанию True.

True

Returns:

Name Type Description
PinnedMessage PinnedMessage

Результат выполнения метода pin_message бота.

Source code in maxapi/types/message.py
async def pin(self, *, notify: bool = True) -> PinnedMessage:
    """
    Закрепляет текущее сообщение в чате.

    Args:
        notify: Флаг отправки уведомления. По умолчанию True.

    Returns:
        PinnedMessage: Результат выполнения метода pin_message бота.
    """

    if self.body is None:
        msg = "Невозможно закрепить: поле body отсутствует у сообщения"
        raise ValueError(msg)

    if self.recipient.chat_id is None:
        raise ValueError("chat_id не может быть None")

    return await self._ensure_bot().pin_message(
        chat_id=self.recipient.chat_id,
        message_id=self.body.mid,
        notify=notify,
    )

unpin() async

Снимает закрепленное сообщение в чате текущего сообщения.

Returns:

Name Type Description
DeletedPinMessage DeletedPinMessage

Результат выполнения метода delete_pin_message.

Source code in maxapi/types/message.py
async def unpin(self) -> DeletedPinMessage:
    """
    Снимает закрепленное сообщение в чате текущего сообщения.

    Returns:
        DeletedPinMessage: Результат выполнения метода delete_pin_message.
    """

    if self.recipient.chat_id is None:
        raise ValueError("chat_id не может быть None")

    return await self._ensure_bot().delete_pin_message(
        chat_id=self.recipient.chat_id,
    )

Messages

Bases: BaseModel

Модель списка сообщений.

Attributes:

Name Type Description
messages list[Message]

Список сообщений.

bot Any | None

Объект бота, исключается из сериализации.

Bases: BaseModel

Модель ссылки на новое сообщение.

Attributes:

Name Type Description
type MessageLinkType

Тип связи.

mid str

Идентификатор сообщения.