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

MessageCreated

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,
    )

MessageCreated

Bases: BaseUpdate

Обновление, сигнализирующее о создании нового сообщения.

Attributes:

Name Type Description
message Message

Объект сообщения.

user_locale Optional[str]

Локаль пользователя.

get_ids()

Возвращает кортеж идентификаторов (chat_id, user_id).

Returns:

Type Description
tuple[int | None, int | None]

tuple[Optional[int], Optional[int]]: Идентификатор чата и пользователя.

Source code in maxapi/types/updates/message_created.py
def get_ids(self) -> tuple[int | None, int | None]:
    """
    Возвращает кортеж идентификаторов (chat_id, user_id).

    Returns:
        tuple[Optional[int], Optional[int]]: Идентификатор чата и
            пользователя.
    """

    chat_id = self.message.recipient.chat_id
    user_id = self.message.sender.user_id if self.message.sender else None
    return chat_id, user_id