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

SendComment

SendComment(bot, message_id, text=None, link=None, format=None)

Bases: BaseConnection

Класс для отправки комментария к посту в канале через API.

https://dev.max.ru/docs-api/methods/POST/messages/-messageId-/comments

Attributes:

Name Type Description
bot

Экземпляр бота для выполнения запроса.

message_id

Идентификатор поста (mid), к которому относится комментарий.

text

Текст комментария.

link

Ссылка на комментарий (например, ответ).

format

Режим форматирования текста (например, Markdown, HTML). В комментариях не поддерживаются упоминания и гиперссылки.

Source code in maxapi/methods/send_comment.py
def __init__(
    self,
    bot: Bot,
    message_id: str,
    text: str | None = None,
    link: NewMessageLink | None = None,
    format: TextFormat | None = None,
):
    if len(message_id) < 1:
        raise ValueError("message_id не должен быть меньше 1 символа")

    if text is not None and len(text) > 4000:
        raise ValueError("text должен быть не длиннее 4000 символов")

    if text is None and link is None:
        raise ValueError(
            "Нужно передать хотя бы один из параметров: text или link"
        )

    if link is not None and link.type != MessageLinkType.REPLY:
        raise ValueError(
            "Для комментариев поддерживается только link.type = reply"
        )

    # Поддержка передачи строки вместо enum: пользователь может
    # передать "html" или TextFormat.HTML — внутри всегда храним
    # enum, чтобы .value работал без ошибок.
    if isinstance(format, str) and not isinstance(format, TextFormat):
        format = TextFormat(format)

    super().__init__()
    self.bot = bot
    self.message_id = message_id
    self.text = text
    self.link = link
    self.format = format

fetch() async

Выполняет POST-запрос для отправки комментария.

Returns:

Name Type Description
SendedComment SendedComment

Объект с отправленным комментарием.

Source code in maxapi/methods/send_comment.py
async def fetch(self) -> SendedComment:
    """
    Выполняет POST-запрос для отправки комментария.

    Returns:
        SendedComment: Объект с отправленным комментарием.
    """

    bot = self._ensure_bot()

    json: dict[str, Any] = {}

    if self.text is not None:
        json["text"] = self.text

    if self.link is not None:
        json["link"] = self.link.model_dump()

    if self.format is not None:
        json["format"] = self.format

    response = await super().request(
        method=HTTPMethod.POST,
        path=ApiPath.MESSAGES + "/" + self.message_id + ApiPath.COMMENTS,
        model=SendedComment,
        params=bot.params,
        json=json,
    )

    sended_comment = cast(SendedComment, response)

    # recipient.post_id в схеме API помечен Nullable, поэтому
    # надёжный источник post_message_id — контекст запроса:
    # message_id, по которому запрос реально выполнен.
    sended_comment.message.post_message_id = self.message_id

    return sended_comment