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

Message Module

MarkupElement

Bases: BaseModel

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

Attributes:

Name Type Description
type TextStyle

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

from_ int

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

length int

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

Bases: MarkupElement

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

Attributes:

Name Type Description
url Optional[str]

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

MarkupUserMention

Bases: MarkupElement

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

Attributes:

Name Type Description
user_id Optional[int]

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

user_link Optional[str]

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

Recipient

Bases: BaseModel

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

Attributes:

Name Type Description
user_id Optional[int]

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

chat_id Optional[int]

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

chat_type ChatType

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

MessageBody

Bases: BaseModel

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

Attributes:

Name Type Description
mid str

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

seq int

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

text str

Текст сообщения. Может быть 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 Optional[User]

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

chat_id Optional[int]

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

message MessageBody

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

Message

Bases: BaseModel, BotMixin

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

Attributes:

Name Type Description
sender Optional[User]

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

recipient Recipient

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

timestamp int

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

link Optional[LinkedMessage]

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

body Optional[MessageBody]

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

stat Optional[MessageStat]

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

url Optional[str]

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

bot Optional[Bot]

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

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
link NewMessageLink

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

None
format TextFormat

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

None
parse_mode ParseMode

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

None
notify bool

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

None
disable_link_preview bool

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

None
sleep_after_input_media bool

Флаг задержки после отправки вложений типа 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 (str, optional): Текст ответа. Может быть None.
        attachments (List[Attachment | InputMedia | InputMediaBuffer
            | AttachmentUpload], optional): Список вложений.
            Может быть None.
        link (NewMessageLink, optional): Связь с другим сообщением.
            Может быть None.
        format (TextFormat, optional): Режим форматирования текста.
            Может быть None.
        parse_mode (ParseMode, optional): Режим форматирования текста.
            Может быть None.
        notify (bool): Флаг отправки уведомления. По умолчанию True.
        disable_link_preview (bool, optional): Флаг генерации превью.
        sleep_after_input_media (bool, optional): Флаг задержки
            после отправки вложений типа InputMedia. По умолчанию True.

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

    return await self._ensure_bot().send_message(
        chat_id=self.recipient.chat_id,
        user_id=self.recipient.user_id,
        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
notify bool

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

None
format TextFormat

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

None
parse_mode ParseMode

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

None
disable_link_preview bool

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

None
sleep_after_input_media bool | None

Optional[bool] = 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 (str, optional): Текст ответа. Может быть None.
        attachments (List[Attachment | InputMedia | InputMediaBuffer
            | AttachmentUpload], optional): Список вложений.
            Может быть None.
        notify (bool): Флаг отправки уведомления. По умолчанию True.
        format (TextFormat, optional): Режим форматирования текста.
            Может быть None.
        parse_mode (ParseMode, optional): Режим форматирования текста.
            Может быть None.
        disable_link_preview (bool, optional): Флаг генерации превью.
        sleep_after_input_media: Optional[bool] = 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

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

required
user_id int

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

None
notify bool

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

None
format TextFormat

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

None
parse_mode ParseMode

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

None
disable_link_preview bool

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

None
sleep_after_input_media bool | None

Optional[bool] = 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 (int): ID чата для отправки (обязателен, если не
            указан user_id)
        user_id (int): ID пользователя для отправки (обязателен,
            если не указан chat_id). По умолчанию None
        attachments (List[Attachment | InputMedia | InputMediaBuffer
            | AttachmentUpload], optional): Список вложений.
            Может быть None.
        notify (bool): Флаг отправки уведомления. По умолчанию True.
        format (TextFormat, optional): Режим форматирования
            текста. Может быть None.
        parse_mode (ParseMode, optional): Режим форматирования
            текста. Может быть None.
        disable_link_preview (bool, optional): Флаг генерации превью.
        sleep_after_input_media: Optional[bool] = 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
link NewMessageLink

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

None
format TextFormat

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

None
parse_mode ParseMode

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

None
notify bool

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

True
sleep_after_input_media bool

Флаг задержки после отправки вложений типа 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 (str, optional): Новый текст сообщения. Может быть None.
        attachments (List[Attachment | InputMedia | InputMediaBuffer |
            AttachmentUpload], optional): Новые вложения. Может быть None.
        link (NewMessageLink, optional): Новая связь с сообщением.
            Может быть None.
        format (TextFormat, optional): Режим форматирования текста.
            Может быть None.
        parse_mode (ParseMode, optional): Режим форматирования текста.
            Может быть None.
        notify (bool): Флаг отправки уведомления. По умолчанию True.
        sleep_after_input_media (bool, optional): Флаг задержки
            после отправки вложений типа 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 (bool): Флаг отправки уведомления. По умолчанию 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,
    )

Messages

Bases: BaseModel

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

Attributes:

Name Type Description
messages List[Message]

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

bot Optional[Bot]

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

Bases: BaseModel

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

Attributes:

Name Type Description
type MessageLinkType

Тип связи.

mid str

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