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

Bot Module

Bot(token=None, *, format=None, parse_mode=None, notify=None, disable_link_preview=None, auto_requests=True, default_connection=None, after_input_media_delay=None, after_upload_attempts=None, after_upload_retry_delay=None, after_upload_give_up_timeout=None, auto_check_subscriptions=True, marker_updates=None)

Bases: BaseConnection

Основной класс для работы с API бота.

Предоставляет методы для взаимодействия с чатами, сообщениями, пользователями и другими функциями бота.

Инициализирует экземпляр бота.

Parameters:

Name Type Description Default
token str

Токен доступа к API бота. При None идет получение из под окружения MAX_BOT_TOKEN.

None
format Optional[TextFormat]

Форматирование по умолчанию.

None
parse_mode Optional[ParseMode]

Форматирование по умолчанию.

None
notify Optional[bool]

Отключение уведомлений при отправке сообщений.

None
disable_link_preview Optional[bool]

Если false, сервер не будет генерировать превью для ссылок в тексте сообщений.

None
auto_requests bool

Автоматическое заполнение chat/from_user через API (по умолчанию True).

True
default_connection Optional[DefaultConnectionProperties]

Настройки соединения.

None
after_input_media_delay Optional[float]

Задержка после загрузки файла.

None
after_upload_attempts Optional[int]

Количество попыток отправки сообщения после загрузки медиа (по умолчанию 5).

None
after_upload_retry_delay Optional[float]

Задержка между попытками отправки после загрузки медиа в секундах (по умолчанию 2.0).

None
after_upload_give_up_timeout Optional[float]

Максимальное общее время ожидания готовности медиа в секундах. None — без ограничения по времени, только по количеству попыток (по умолчанию None).

None
auto_check_subscriptions bool

Проверка подписок для метода start_polling.

True
marker_updates Optional[int]

Маркер для получения обновлений.

None
Source code in maxapi/bot.py
def __init__(
    self,
    token: str | None = None,
    *,
    format: TextFormat | None = None,
    parse_mode: ParseMode | None = None,
    notify: bool | None = None,
    disable_link_preview: bool | None = None,
    auto_requests: bool = True,
    default_connection: DefaultConnectionProperties | None = None,
    after_input_media_delay: float | None = None,
    after_upload_attempts: int | None = None,
    after_upload_retry_delay: float | None = None,
    after_upload_give_up_timeout: float | None = None,
    auto_check_subscriptions: bool = True,
    marker_updates: int | None = None,
):
    """
    Инициализирует экземпляр бота.

    Args:
        token (str): Токен доступа к API бота. При None идет
            получение из под окружения MAX_BOT_TOKEN.
        format (Optional[TextFormat]): Форматирование по
            умолчанию.
        parse_mode (Optional[ParseMode]): Форматирование по
            умолчанию.
        notify (Optional[bool]): Отключение уведомлений при отправке
            сообщений.
        disable_link_preview (Optional[bool]): Если false, сервер не
            будет генерировать превью для ссылок в тексте сообщений.
        auto_requests (bool): Автоматическое заполнение
            chat/from_user через API (по умолчанию True).
        default_connection (Optional[DefaultConnectionProperties]):
            Настройки соединения.
        after_input_media_delay (Optional[float]): Задержка после
            загрузки файла.
        after_upload_attempts (Optional[int]): Количество попыток
            отправки сообщения после загрузки медиа
            (по умолчанию 5).
        after_upload_retry_delay (Optional[float]): Задержка между
            попытками отправки после загрузки медиа в секундах
            (по умолчанию 2.0).
        after_upload_give_up_timeout (Optional[float]): Максимальное
            общее время ожидания готовности медиа в секундах.
            None — без ограничения по времени, только по количеству
            попыток (по умолчанию None).
        auto_check_subscriptions (bool): Проверка подписок для
            метода start_polling.
        marker_updates (Optional[int]): Маркер для получения
            обновлений.
    """

    super().__init__()
    self.bot = self
    self.default_connection = (
        default_connection or DefaultConnectionProperties()
    )
    self.after_input_media_delay = after_input_media_delay or 2.0
    self.after_upload_attempts = (
        after_upload_attempts if after_upload_attempts is not None else 5
    )
    if self.after_upload_attempts < 1:
        raise ValueError("after_upload_attempts должно быть >= 1")
    self.after_upload_retry_delay = (
        after_upload_retry_delay
        if after_upload_retry_delay is not None
        else 2.0
    )
    if self.after_upload_retry_delay < 0:
        raise ValueError(
            "after_upload_retry_delay не может быть отрицательным"
        )
    self.after_upload_give_up_timeout = after_upload_give_up_timeout
    if (
        self.after_upload_give_up_timeout is not None
        and self.after_upload_give_up_timeout <= 0
    ):
        raise ValueError("after_upload_give_up_timeout должно быть > 0")
    self.auto_check_subscriptions = auto_check_subscriptions
    self.commands: list[CommandsInfo] = []

    self.__token = token or os.environ.get("MAX_BOT_TOKEN")
    if self.__token is None:
        raise InvalidToken(
            "Токен не может быть None. "
            'Укажите токен в Bot(token="...") '
            "или в переменную окружения MAX_BOT_TOKEN"
        )

    self.params: dict[str, Any] = {}
    self.headers: dict[str, Any] = {"Authorization": self.__token}
    self.marker_updates = marker_updates

    if parse_mode is not None:
        warnings.warn(
            "Параметр parse_mode устарел, используйте format.",
            DeprecationWarning,
            stacklevel=3,
        )
    self.parse_mode = parse_mode if parse_mode is not None else format
    self.notify = notify
    self.disable_link_preview = disable_link_preview
    self.auto_requests = auto_requests

    self.dispatcher: Dispatcher | None = None
    self._me: User | None = None

handlers_commands property

Возвращает список команд из зарегистрированных обработчиков текущего инстанса.

Returns:

Type Description
list[CommandsInfo]

List[CommandsInfo]: Список команд

me property

Возвращает объект пользователя (бота).

Returns:

Type Description
User | None

User | None: Объект пользователя или None.

set_marker_updates(marker_updates)

Устанавливает маркер для получения обновлений.

Parameters:

Name Type Description Default
marker_updates int

Маркер для получения обновлений.

required
Source code in maxapi/bot.py
def set_marker_updates(self, marker_updates: int) -> None:
    """
    Устанавливает маркер для получения обновлений.

    Args:
        marker_updates (int): Маркер для получения обновлений.
    """

    self.marker_updates = marker_updates

close_session() async

Закрывает текущую сессию aiohttp.

Returns:

Type Description
None

None

Source code in maxapi/bot.py
async def close_session(self) -> None:
    """
    Закрывает текущую сессию aiohttp.

    Returns:
        None
    """

    if self.session is not None:
        await self.session.close()

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

Отправляет сообщение в чат или пользователю.

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

Parameters:

Name Type Description Default
chat_id Optional[int]

ID чата для отправки (если не user_id).

None
user_id Optional[int]

ID пользователя (если не chat_id).

None
text Optional[str]

Текст сообщения.

None
link Optional[NewMessageLink]

Данные ссылки сообщения.

None
notify Optional[bool]

Флаг уведомления.

None
format Optional[TextFormat]

Режим форматирования текста.

None
parse_mode Optional[ParseMode]

Режим форматирования текста.

None
disable_link_preview Optional[bool]

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

None
sleep_after_input_media Optional[bool]

Нужно ли делать задержку после загрузки вложений.

True

Returns:

Type Description
SendedMessage | None

Optional[SendedMessage]: Отправленное сообщение или ошибка.

Source code in maxapi/bot.py
async def send_message(
    self,
    chat_id: int | None = None,
    user_id: int | None = None,
    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 | None = None,
    disable_link_preview: bool | None = None,
    sleep_after_input_media: bool | None = True,
) -> SendedMessage | None:
    """
    Отправляет сообщение в чат или пользователю.

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

    Args:
        chat_id (Optional[int]): ID чата для отправки (если не
            user_id).
        user_id (Optional[int]): ID пользователя (если не chat_id).
        text (Optional[str]): Текст сообщения.
        attachments (Optional[List[Attachment | InputMedia |
            InputMediaBuffer]]): Вложения.
        link (Optional[NewMessageLink]): Данные ссылки сообщения.
        notify (Optional[bool]): Флаг уведомления.
        format (Optional[TextFormat]): Режим форматирования
            текста.
        parse_mode (Optional[ParseMode]): Режим форматирования
            текста.
        disable_link_preview (Optional[bool]): Флаг генерации
            превью.
        sleep_after_input_media (Optional[bool]): Нужно ли делать
            задержку после загрузки вложений.

    Returns:
        Optional[SendedMessage]: Отправленное сообщение или ошибка.
    """

    return await SendMessage(
        bot=self,
        chat_id=chat_id,
        user_id=user_id,
        text=text,
        attachments=attachments,
        link=link,
        notify=self._resolve_notify(notify=notify),
        format=self._resolve_format(format, parse_mode),
        parse_mode=parse_mode,
        disable_link_preview=self._resolve_disable_link_preview(
            disable_link_preview=disable_link_preview,
        ),
        sleep_after_input_media=sleep_after_input_media,
    ).fetch()

send_action(chat_id=None, action=SenderAction.TYPING_ON) async

Отправляет действие в чат (например, "печатает").

https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/actions

Parameters:

Name Type Description Default
chat_id Optional[int]

ID чата.

None
action SenderAction

Тип действия.

TYPING_ON

Returns:

Name Type Description
SendedAction SendedAction

Результат отправки действия.

Source code in maxapi/bot.py
async def send_action(
    self,
    chat_id: int | None = None,
    action: SenderAction = SenderAction.TYPING_ON,
) -> SendedAction:
    """
    Отправляет действие в чат (например, "печатает").

    https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/actions

    Args:
        chat_id (Optional[int]): ID чата.
        action (SenderAction): Тип действия.

    Returns:
        SendedAction: Результат отправки действия.
    """

    return await SendAction(
        bot=self, chat_id=chat_id, action=action
    ).fetch()

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

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

https://dev.max.ru/docs-api/methods/PUT/messages

Parameters:

Name Type Description Default
message_id str

ID сообщения.

required
text Optional[str]

Новый текст.

None
link Optional[NewMessageLink]

Новая ссылка.

None
notify Optional[bool]

Флаг уведомления.

None
format Optional[TextFormat]

Режим форматирования текста.

None
parse_mode Optional[ParseMode]

Режим форматирования текста.

None
sleep_after_input_media Optional[bool]

Нужно ли делать задержку после загрузки вложений.

True

Returns:

Type Description
EditedMessage | None

Optional[EditedMessage]: Отредактированное сообщение или ошибка.

Source code in maxapi/bot.py
async def edit_message(
    self,
    message_id: str,
    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 | None = None,
    sleep_after_input_media: bool | None = True,
) -> EditedMessage | None:
    """
    Редактирует существующее сообщение.

    https://dev.max.ru/docs-api/methods/PUT/messages

    Args:
        message_id (str): ID сообщения.
        text (Optional[str]): Новый текст.
        attachments (Optional[List[Attachment | InputMedia |
            InputMediaBuffer]]): Новые вложения.
        link (Optional[NewMessageLink]): Новая ссылка.
        notify (Optional[bool]): Флаг уведомления.
        format (Optional[TextFormat]): Режим форматирования
            текста.
        parse_mode (Optional[ParseMode]): Режим форматирования
            текста.
        sleep_after_input_media (Optional[bool]): Нужно ли делать
            задержку после загрузки вложений.

    Returns:
        Optional[EditedMessage]: Отредактированное сообщение
            или ошибка.
    """

    return await EditMessage(
        bot=self,
        message_id=message_id,
        text=text,
        attachments=attachments,
        link=link,
        notify=self._resolve_notify(notify=notify),
        format=self._resolve_format(format, parse_mode),
        parse_mode=parse_mode,
        sleep_after_input_media=sleep_after_input_media,
    ).fetch()

delete_message(message_id) async

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

https://dev.max.ru/docs-api/methods/DELETE/messages

Parameters:

Name Type Description Default
message_id str

ID сообщения.

required

Returns:

Name Type Description
DeletedMessage DeletedMessage

Результат удаления.

Source code in maxapi/bot.py
async def delete_message(self, message_id: str) -> DeletedMessage:
    """
    Удаляет сообщение.

    https://dev.max.ru/docs-api/methods/DELETE/messages

    Args:
        message_id (str): ID сообщения.

    Returns:
        DeletedMessage: Результат удаления.
    """

    return await DeleteMessage(
        bot=self,
        message_id=message_id,
    ).fetch()

delete_chat(chat_id) async

Удаляет чат.

https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-

Parameters:

Name Type Description Default
chat_id int

ID чата.

required

Returns:

Name Type Description
DeletedChat DeletedChat

Результат удаления чата.

Source code in maxapi/bot.py
async def delete_chat(self, chat_id: int) -> DeletedChat:
    """
    Удаляет чат.

    https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-

    Args:
        chat_id (int): ID чата.

    Returns:
        DeletedChat: Результат удаления чата.
    """

    return await DeleteChat(
        bot=self,
        chat_id=chat_id,
    ).fetch()

get_messages(chat_id=None, message_ids=None, from_time=None, to_time=None, count=50) async

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

https://dev.max.ru/docs-api/methods/GET/messages

Parameters:

Name Type Description Default
chat_id Optional[int]

ID чата.

None
message_ids Optional[List[str]]

ID сообщений.

None
from_time Optional[datetime | int]

Начало периода.

None
to_time Optional[datetime | int]

Конец периода.

None
count int

Количество сообщений.

50

Returns:

Name Type Description
Messages Messages

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

Source code in maxapi/bot.py
async def get_messages(
    self,
    chat_id: int | None = None,
    message_ids: list[str] | None = None,
    from_time: datetime | int | None = None,
    to_time: datetime | int | None = None,
    count: int = 50,
) -> Messages:
    """
    Получает сообщения из чата.

    https://dev.max.ru/docs-api/methods/GET/messages

    Args:
        chat_id (Optional[int]): ID чата.
        message_ids (Optional[List[str]]): ID сообщений.
        from_time (Optional[datetime | int]): Начало периода.
        to_time (Optional[datetime | int]): Конец периода.
        count (int): Количество сообщений.

    Returns:
        Messages: Список сообщений.
    """

    return await GetMessages(
        bot=self,
        chat_id=chat_id,
        message_ids=message_ids,
        from_time=from_time,
        to_time=to_time,
        count=count,
    ).fetch()

get_message(message_id) async

Получает одно сообщение по ID.

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

Parameters:

Name Type Description Default
message_id str

ID сообщения.

required

Returns:

Name Type Description
Message Message

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

Source code in maxapi/bot.py
async def get_message(self, message_id: str) -> Message:
    """
    Получает одно сообщение по ID.

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

    Args:
        message_id (str): ID сообщения.

    Returns:
        Message: Объект сообщения.
    """

    return await GetMessage(bot=self, message_id=message_id).fetch()

get_me() async

Получает информацию о текущем боте.

https://dev.max.ru/docs-api/methods/GET/me

Returns:

Name Type Description
User User

Объект пользователя бота.

Source code in maxapi/bot.py
async def get_me(self) -> User:
    """
    Получает информацию о текущем боте.

    https://dev.max.ru/docs-api/methods/GET/me

    Returns:
        User: Объект пользователя бота.
    """

    return await GetMe(self).fetch()

get_pin_message(chat_id) async

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

https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/pin

Parameters:

Name Type Description Default
chat_id int

ID чата.

required

Returns:

Name Type Description
GettedPin GettedPin

Закрепленное сообщение.

Source code in maxapi/bot.py
async def get_pin_message(self, chat_id: int) -> GettedPin:
    """
    Получает закрепленное сообщение в чате.

    https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/pin

    Args:
        chat_id (int): ID чата.

    Returns:
        GettedPin: Закрепленное сообщение.
    """

    return await GetPinnedMessage(bot=self, chat_id=chat_id).fetch()

change_info(first_name=None, last_name=None, description=None, commands=None, photo=None) async

Изменяет данные текущего бота (PATCH /me).

.. deprecated:: 0.9.8 Этот метод отсутствует в официальной swagger-спецификации API MAX. Использование не рекомендуется.

https://dev.max.ru/docs-api/methods/PATCH/me

Parameters:

Name Type Description Default
first_name Optional[str]

Новое имя бота (1–64 символа).

None
last_name str

Второе имя бота (1–64 символа).

None
description Optional[str]

Новое описание бота (1–16000 символов).

None
commands Optional[List[BotCommand]]

Список команд бота (до 32 элементов). Передайте пустой список, чтобы удалить все команды.

None
photo Optional[PhotoAttachmentRequestPayload]

Новое фото бота.

None

Returns:

Name Type Description
User User

Объект с обновлённой информацией о боте.

Source code in maxapi/bot.py
async def change_info(
    self,
    first_name: str | None = None,
    last_name: str | None = None,
    description: str | None = None,
    commands: list[BotCommand] | None = None,
    photo: PhotoAttachmentRequestPayload | None = None,
) -> User:
    """
    Изменяет данные текущего бота (PATCH /me).

    .. deprecated:: 0.9.8
        Этот метод отсутствует в официальной swagger-спецификации API MAX.
        Использование не рекомендуется.

    https://dev.max.ru/docs-api/methods/PATCH/me

    Args:
        first_name (Optional[str]): Новое имя бота (1–64 символа).
        last_name (str, optional): Второе имя бота (1–64 символа).
        description (Optional[str]): Новое описание бота
            (1–16000 символов).
        commands (Optional[List[BotCommand]]): Список команд бота
            (до 32 элементов). Передайте пустой список, чтобы
            удалить все команды.
        photo (Optional[PhotoAttachmentRequestPayload]): Новое
            фото бота.

    Returns:
        User: Объект с обновлённой информацией о боте.
    """

    warnings.warn(
        "bot.change_info() устарел и отсутствует в официальной "
        "swagger-спецификации API MAX. "
        "Использование не рекомендуется.",
        DeprecationWarning,
        stacklevel=2,
    )

    return await ChangeInfo(
        bot=self,
        first_name=first_name,
        last_name=last_name,
        description=description,
        commands=commands,
        photo=photo,
    ).fetch()

get_chats(count=None, marker=None) async

Получает список чатов бота.

https://dev.max.ru/docs-api/methods/GET/chats

Parameters:

Name Type Description Default
count Optional[int]

Количество чатов (по умолчанию 50) (1-100).

None
marker Optional[int]

Маркер для пагинации.

None

Returns:

Name Type Description
Chats Chats

Список чатов.

Source code in maxapi/bot.py
async def get_chats(
    self, count: int | None = None, marker: int | None = None
) -> Chats:
    """
    Получает список чатов бота.

    https://dev.max.ru/docs-api/methods/GET/chats

    Args:
        count (Optional[int]): Количество чатов (по умолчанию 50) (1-100).
        marker (Optional[int]): Маркер для пагинации.

    Returns:
        Chats: Список чатов.
    """

    return await GetChats(bot=self, count=count, marker=marker).fetch()

Получает чат по ссылке.

https://dev.max.ru/docs-api/methods/GET/chats/-chatLink-

Parameters:

Name Type Description Default
link str

Ссылка на чат.

required

Returns:

Name Type Description
Chat Chat

Объект чата.

Source code in maxapi/bot.py
async def get_chat_by_link(self, link: str) -> Chat:
    """
    Получает чат по ссылке.

    https://dev.max.ru/docs-api/methods/GET/chats/-chatLink-

    Args:
        link (str): Ссылка на чат.

    Returns:
        Chat: Объект чата.
    """

    return await GetChatByLink(bot=self, link=link).fetch()

get_chat_by_id(id) async

Получает чат по ID.

https://dev.max.ru/docs-api/methods/GET/chats/-chatId-

Parameters:

Name Type Description Default
id int

ID чата.

required

Returns:

Name Type Description
Chat Chat

Объект чата.

Source code in maxapi/bot.py
async def get_chat_by_id(self, id: int) -> Chat:
    """
    Получает чат по ID.

    https://dev.max.ru/docs-api/methods/GET/chats/-chatId-

    Args:
        id (int): ID чата.

    Returns:
        Chat: Объект чата.
    """

    return await GetChatById(bot=self, id=id).fetch()

edit_chat(chat_id, icon=None, title=None, pin=None, *, notify=None) async

Редактирует информацию о чате.

https://dev.max.ru/docs-api/methods/PATCH/chats/-chatId-

Parameters:

Name Type Description Default
chat_id int

ID чата.

required
icon Optional[PhotoAttachmentRequestPayload]

Иконка.

None
title Optional[str]

Новый заголовок (1-200 символов).

None
pin Optional[str]

ID сообщения для закрепления.

None
notify Optional[bool]

Флаг уведомления.

None

Returns:

Name Type Description
Chat Chat

Обновленный объект чата.

Source code in maxapi/bot.py
async def edit_chat(
    self,
    chat_id: int,
    icon: PhotoAttachmentRequestPayload | None = None,
    title: str | None = None,
    pin: str | None = None,
    *,
    notify: bool | None = None,
) -> Chat:
    """
    Редактирует информацию о чате.

    https://dev.max.ru/docs-api/methods/PATCH/chats/-chatId-

    Args:
        chat_id (int): ID чата.
        icon (Optional[PhotoAttachmentRequestPayload]): Иконка.
        title (Optional[str]): Новый заголовок (1-200 символов).
        pin (Optional[str]): ID сообщения для закрепления.
        notify (Optional[bool]): Флаг уведомления.

    Returns:
        Chat: Обновленный объект чата.
    """

    return await EditChat(
        bot=self,
        chat_id=chat_id,
        icon=icon,
        title=title,
        pin=pin,
        notify=self._resolve_notify(notify=notify),
    ).fetch()

get_video(video_token) async

Получает видео по токену.

https://dev.max.ru/docs-api/methods/GET/videos/-videoToken-

Parameters:

Name Type Description Default
video_token str

Токен видео.

required

Returns:

Name Type Description
Video Video

Объект видео.

Source code in maxapi/bot.py
async def get_video(self, video_token: str) -> Video:
    """
    Получает видео по токену.

    https://dev.max.ru/docs-api/methods/GET/videos/-videoToken-

    Args:
        video_token (str): Токен видео.

    Returns:
        Video: Объект видео.
    """

    return await GetVideo(bot=self, video_token=video_token).fetch()

send_callback(callback_id, message=None, notification=None) async

Отправляет callback ответ.

https://dev.max.ru/docs-api/methods/POST/answers

Parameters:

Name Type Description Default
callback_id str

ID callback.

required
message Optional[MessageForCallback]

Сообщение для отправки.

None
notification Optional[str]

Текст уведомления.

None

Returns:

Name Type Description
SendedCallback SendedCallback

Результат отправки callback.

Source code in maxapi/bot.py
async def send_callback(
    self,
    callback_id: str,
    message: MessageForCallback | None = None,
    notification: str | None = None,
) -> SendedCallback:
    """
    Отправляет callback ответ.

    https://dev.max.ru/docs-api/methods/POST/answers

    Args:
        callback_id (str): ID callback.
        message (Optional[MessageForCallback]): Сообщение для отправки.
        notification (Optional[str]): Текст уведомления.

    Returns:
        SendedCallback: Результат отправки callback.
    """

    return await SendCallback(
        bot=self,
        callback_id=callback_id,
        message=message,
        notification=notification,
    ).fetch()

pin_message(chat_id, message_id, *, notify=None) async

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

https://dev.max.ru/docs-api/methods/PUT/chats/-chatId-/pin

Parameters:

Name Type Description Default
chat_id int

ID чата.

required
message_id str

ID сообщения.

required
notify Optional[bool]

Флаг уведомления.

None

Returns:

Name Type Description
PinnedMessage PinnedMessage

Закрепленное сообщение.

Source code in maxapi/bot.py
async def pin_message(
    self, chat_id: int, message_id: str, *, notify: bool | None = None
) -> PinnedMessage:
    """
    Закрепляет сообщение в чате.

    https://dev.max.ru/docs-api/methods/PUT/chats/-chatId-/pin

    Args:
        chat_id (int): ID чата.
        message_id (str): ID сообщения.
        notify (Optional[bool]): Флаг уведомления.

    Returns:
        PinnedMessage: Закрепленное сообщение.
    """

    return await PinMessage(
        bot=self,
        chat_id=chat_id,
        message_id=message_id,
        notify=self._resolve_notify(notify=notify),
    ).fetch()

delete_pin_message(chat_id) async

Удаляет закрепленное сообщение в чате.

https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/pin

Parameters:

Name Type Description Default
chat_id int

ID чата.

required

Returns:

Name Type Description
DeletedPinMessage DeletedPinMessage

Результат удаления.

Source code in maxapi/bot.py
async def delete_pin_message(
    self,
    chat_id: int,
) -> DeletedPinMessage:
    """
    Удаляет закрепленное сообщение в чате.

    https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/pin

    Args:
        chat_id (int): ID чата.

    Returns:
        DeletedPinMessage: Результат удаления.
    """

    return await DeletePinMessage(
        bot=self,
        chat_id=chat_id,
    ).fetch()

get_me_from_chat(chat_id) async

Получает информацию о боте в чате.

https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/me

Parameters:

Name Type Description Default
chat_id int

ID чата.

required

Returns:

Name Type Description
ChatMember ChatMember

Информация о боте в чате.

Source code in maxapi/bot.py
async def get_me_from_chat(
    self,
    chat_id: int,
) -> ChatMember:
    """
    Получает информацию о боте в чате.

    https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/me

    Args:
        chat_id (int): ID чата.

    Returns:
        ChatMember: Информация о боте в чате.
    """

    return await GetMeFromChat(
        bot=self,
        chat_id=chat_id,
    ).fetch()

delete_me_from_chat(chat_id) async

Удаляет бота из чата.

https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members/me

Parameters:

Name Type Description Default
chat_id int

ID чата.

required

Returns:

Name Type Description
DeletedBotFromChat DeletedBotFromChat

Результат удаления.

Source code in maxapi/bot.py
async def delete_me_from_chat(
    self,
    chat_id: int,
) -> DeletedBotFromChat:
    """
    Удаляет бота из чата.

    https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members/me

    Args:
        chat_id (int): ID чата.

    Returns:
        DeletedBotFromChat: Результат удаления.
    """

    return await DeleteMeFromMessage(
        bot=self,
        chat_id=chat_id,
    ).fetch()

get_list_admin_chat(chat_id) async

Получает список администраторов чата.

https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/admins

Parameters:

Name Type Description Default
chat_id int

ID чата.

required

Returns:

Name Type Description
GettedListAdminChat GettedListAdminChat

Список администраторов.

Source code in maxapi/bot.py
async def get_list_admin_chat(
    self,
    chat_id: int,
) -> GettedListAdminChat:
    """
    Получает список администраторов чата.

    https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/admins

    Args:
        chat_id (int): ID чата.

    Returns:
        GettedListAdminChat: Список администраторов.
    """

    return await GetListAdminChat(
        bot=self,
        chat_id=chat_id,
    ).fetch()

add_list_admin_chat(chat_id, admins, marker=None) async

Добавляет администраторов в чат.

https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members/admins

Parameters:

Name Type Description Default
chat_id int

ID чата.

required
admins List[ChatAdmin]

Список администраторов.

required
marker Optional[int]

Маркер для пагинации.

None

Returns:

Name Type Description
AddedListAdminChat AddedListAdminChat

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

Source code in maxapi/bot.py
async def add_list_admin_chat(
    self,
    chat_id: int,
    admins: list[ChatAdmin],
    marker: int | None = None,
) -> AddedListAdminChat:
    """
    Добавляет администраторов в чат.

    https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members/admins

    Args:
        chat_id (int): ID чата.
        admins (List[ChatAdmin]): Список администраторов.
        marker (Optional[int]): Маркер для пагинации.

    Returns:
        AddedListAdminChat: Результат добавления.
    """

    return await AddAdminChat(
        bot=self,
        chat_id=chat_id,
        admins=admins,
        marker=marker,
    ).fetch()

remove_admin(chat_id, user_id) async

Удаляет администратора из чата.

https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members/admins/-userId-

Parameters:

Name Type Description Default
chat_id int

ID чата.

required
user_id int

ID пользователя.

required

Returns:

Name Type Description
RemovedAdmin RemovedAdmin

Результат удаления.

Source code in maxapi/bot.py
async def remove_admin(self, chat_id: int, user_id: int) -> RemovedAdmin:
    """
    Удаляет администратора из чата.

    https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members/admins/-userId-

    Args:
        chat_id (int): ID чата.
        user_id (int): ID пользователя.

    Returns:
        RemovedAdmin: Результат удаления.
    """

    return await RemoveAdmin(
        bot=self,
        chat_id=chat_id,
        user_id=user_id,
    ).fetch()

get_chat_members(chat_id, user_ids=None, marker=None, count=None) async

Получает участников чата.

https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members

Parameters:

Name Type Description Default
chat_id int

ID чата.

required
user_ids Optional[List[int]]

Список ID участников.

None
marker Optional[int]

Маркер для пагинации.

None
count Optional[int]

Количество участников (по умолчанию 20) (1-100).

None

Returns:

Name Type Description
GettedMembersChat GettedMembersChat

Список участников.

Source code in maxapi/bot.py
async def get_chat_members(
    self,
    chat_id: int,
    user_ids: list[int] | None = None,
    marker: int | None = None,
    count: int | None = None,
) -> GettedMembersChat:
    """
    Получает участников чата.

    https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members

    Args:
        chat_id (int): ID чата.
        user_ids (Optional[List[int]]): Список ID участников.
        marker (Optional[int]): Маркер для пагинации.
        count (Optional[int]): Количество участников
            (по умолчанию 20) (1-100).

    Returns:
        GettedMembersChat: Список участников.
    """

    return await GetMembersChat(
        bot=self,
        chat_id=chat_id,
        user_ids=user_ids,
        marker=marker,
        count=count,
    ).fetch()

get_chat_member(chat_id, user_id) async

Получает участника чата.

https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members

Parameters:

Name Type Description Default
chat_id int

ID чата.

required
user_id int

ID участника.

required

Returns:

Type Description
ChatMember | None

Optional[ChatMember]: Участник.

Source code in maxapi/bot.py
async def get_chat_member(
    self,
    chat_id: int,
    user_id: int,
) -> ChatMember | None:
    """
    Получает участника чата.

    https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members

    Args:
        chat_id (int): ID чата.
        user_id (int): ID участника.

    Returns:
        Optional[ChatMember]: Участник.
    """

    members = await self.get_chat_members(
        chat_id=chat_id, user_ids=[user_id]
    )

    if members.members:
        return members.members[0]

    return None

add_chat_members(chat_id, user_ids) async

Добавляет участников в чат.

https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members

Parameters:

Name Type Description Default
chat_id int

ID чата.

required
user_ids List[int]

Список ID пользователей.

required

Returns:

Name Type Description
AddedMembersChat AddedMembersChat

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

Source code in maxapi/bot.py
async def add_chat_members(
    self,
    chat_id: int,
    user_ids: list[int],
) -> AddedMembersChat:
    """
    Добавляет участников в чат.

    https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members

    Args:
        chat_id (int): ID чата.
        user_ids (List[int]): Список ID пользователей.

    Returns:
        AddedMembersChat: Результат добавления.
    """

    return await AddMembersChat(
        bot=self,
        chat_id=chat_id,
        user_ids=user_ids,
    ).fetch()

kick_chat_member(chat_id, user_id, *, block=False) async

Исключает участника из чата.

https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members

Parameters:

Name Type Description Default
chat_id int

ID чата.

required
user_id int

ID пользователя.

required
block bool

Блокировать пользователя (по умолчанию False).

False

Returns:

Name Type Description
RemovedMemberChat RemovedMemberChat

Результат исключения.

Source code in maxapi/bot.py
async def kick_chat_member(
    self,
    chat_id: int,
    user_id: int,
    *,
    block: bool = False,
) -> RemovedMemberChat:
    """
    Исключает участника из чата.

    https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members

    Args:
        chat_id (int): ID чата.
        user_id (int): ID пользователя.
        block (bool): Блокировать пользователя (по умолчанию False).

    Returns:
        RemovedMemberChat: Результат исключения.
    """

    return await RemoveMemberChat(
        bot=self,
        chat_id=chat_id,
        user_id=user_id,
        block=block,
    ).fetch()

get_updates(limit=None, timeout=None, marker=None, types=None) async

Получает обновления для бота.

https://dev.max.ru/docs-api/methods/GET/updates

Returns:

Name Type Description
Dict dict

Список обновлений.

Source code in maxapi/bot.py
async def get_updates(
    self,
    limit: int | None = None,
    timeout: int | None = None,
    marker: int | None = None,
    types: Sequence[UpdateType] | None = None,
) -> dict:
    """
    Получает обновления для бота.

    https://dev.max.ru/docs-api/methods/GET/updates

    Returns:
        Dict: Список обновлений.
    """

    return await GetUpdates(
        bot=self, limit=limit, marker=marker, types=types, timeout=timeout
    ).fetch()

get_upload_url(type) async

Получает URL для загрузки файлов.

https://dev.max.ru/docs-api/methods/POST/uploads

Parameters:

Name Type Description Default
type UploadType

Тип загружаемого файла.

required

Returns:

Name Type Description
GettedUploadUrl GettedUploadUrl

URL для загрузки.

Source code in maxapi/bot.py
async def get_upload_url(self, type: UploadType) -> GettedUploadUrl:
    """
    Получает URL для загрузки файлов.

    https://dev.max.ru/docs-api/methods/POST/uploads

    Args:
        type (UploadType): Тип загружаемого файла.

    Returns:
        GettedUploadUrl: URL для загрузки.
    """

    return await GetUploadURL(bot=self, type=type).fetch()

upload_media(media) async

Загружает медиа и возвращает вложение с токеном.

Упрощает пользовательский сценарий получения token для attachments без ручного вызова низкоуровневых upload-методов.

Parameters:

Name Type Description Default
media InputMedia | InputMediaBuffer

Медиафайл для загрузки.

required

Returns:

Name Type Description
AttachmentUpload AttachmentUpload

Вложение типа upload с payload.token.

Source code in maxapi/bot.py
async def upload_media(
    self, media: InputMedia | InputMediaBuffer
) -> AttachmentUpload:
    """
    Загружает медиа и возвращает вложение с токеном.

    Упрощает пользовательский сценарий получения token для
    `attachments` без ручного вызова низкоуровневых upload-методов.

    Args:
        media (InputMedia | InputMediaBuffer): Медиафайл для загрузки.

    Returns:
        AttachmentUpload: Вложение типа upload с payload.token.
    """

    return await process_input_media(
        base_connection=self,
        bot=self,
        att=media,
    )

set_my_commands(*commands) async

Устанавливает список команд бота.

Parameters:

Name Type Description Default
*commands BotCommand

Список команд.

()

Returns:

Name Type Description
User User

Обновленная информация о боте.

Source code in maxapi/bot.py
async def set_my_commands(self, *commands: BotCommand) -> User:
    """
    Устанавливает список команд бота.

    Args:
        *commands (BotCommand): Список команд.

    Returns:
        User: Обновленная информация о боте.
    """

    warnings.warn(
        "bot.change_info() устарел и отсутствует в официальной "
        "swagger-спецификации API MAX. "
        "Использование не рекомендуется.",
        DeprecationWarning,
        stacklevel=2,
    )

    return await ChangeInfo(bot=self, commands=list(commands)).fetch()

get_subscriptions() async

Получает список всех подписок.

https://dev.max.ru/docs-api/methods/GET/subscriptions

Returns:

Name Type Description
GettedSubscriptions GettedSubscriptions

Объект со списком подписок.

Source code in maxapi/bot.py
async def get_subscriptions(self) -> GettedSubscriptions:
    """
    Получает список всех подписок.

    https://dev.max.ru/docs-api/methods/GET/subscriptions

    Returns:
        GettedSubscriptions: Объект со списком подписок.
    """

    return await GetSubscriptions(bot=self).fetch()

subscribe_webhook(url, update_types=None, secret=None) async

Подписывает бота на получение обновлений через WebHook.

https://dev.max.ru/docs-api/methods/POST/subscriptions

Parameters:

Name Type Description Default
url str

URL HTTP(S)-эндпойнта вашего бота.

required
update_types Optional[List[UpdateType]]

Список типов обновлений.

None
secret Optional[str]

Секрет для Webhook (5-256 симолов).

None

Returns:

Name Type Description
Subscribed Subscribed

Результат подписки.

Source code in maxapi/bot.py
async def subscribe_webhook(
    self,
    url: str,
    update_types: list[UpdateType] | None = None,
    secret: str | None = None,
) -> Subscribed:
    """
    Подписывает бота на получение обновлений через WebHook.

    https://dev.max.ru/docs-api/methods/POST/subscriptions

    Args:
        url (str): URL HTTP(S)-эндпойнта вашего бота.
        update_types (Optional[List[UpdateType]]): Список типов обновлений.
        secret (Optional[str]): Секрет для Webhook (5-256 симолов).

    Returns:
        Subscribed: Результат подписки.
    """

    return await SubscribeWebhook(
        bot=self, url=url, update_types=update_types, secret=secret
    ).fetch()

unsubscribe_webhook(url) async

Отписывает бота от получения обновлений через WebHook.

https://dev.max.ru/docs-api/methods/DELETE/subscriptions

Parameters:

Name Type Description Default
url str

URL HTTP(S)-эндпойнта вашего бота.

required

Returns:

Name Type Description
Unsubscribed Unsubscribed

Результат отписки.

Source code in maxapi/bot.py
async def unsubscribe_webhook(
    self,
    url: str,
) -> Unsubscribed:
    """
    Отписывает бота от получения обновлений через WebHook.

    https://dev.max.ru/docs-api/methods/DELETE/subscriptions

    Args:
        url (str): URL HTTP(S)-эндпойнта вашего бота.

    Returns:
        Unsubscribed: Результат отписки.
    """

    return await UnsubscribeWebhook(
        bot=self,
        url=url,
    ).fetch()

delete_webhook() async

Удаляет все подписки на Webhook.

https://dev.max.ru/docs-api/methods/DELETE/subscriptions

Returns:

Type Description
None

None

Source code in maxapi/bot.py
async def delete_webhook(self) -> None:
    """
    Удаляет все подписки на Webhook.

    https://dev.max.ru/docs-api/methods/DELETE/subscriptions

    Returns:
        None
    """

    subs = await self.get_subscriptions()
    if subs.subscriptions:
        for sub in subs.subscriptions:
            await self.unsubscribe_webhook(sub.url)
            logger_bot.info("Удалена подписка на Webhook: %s", sub.url)