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

Chats Module

Icon

Bases: BaseModel

Модель иконки чата.

Attributes:

Name Type Description
url str

URL-адрес иконки.

ChatMembersManager(*, bot, chat_id)

Bases: BotMixin

High-level API для работы с участниками чата.

Source code in maxapi/types/chats.py
def __init__(self, *, bot: Bot | None, chat_id: int) -> None:
    self.bot = bot
    self.chat_id = chat_id

iter_all(*, count=100) async

Итерировать по всем участникам чата через пагинацию.

Source code in maxapi/types/chats.py
async def iter_all(
    self,
    *,
    count: int = 100,
) -> AsyncIterator[ChatMember]:
    """Итерировать по всем участникам чата через пагинацию."""

    async for member in _walk_member_pages(
        lambda marker: self.list(marker=marker, count=count)
    ):
        yield member

list_all(*, count=100) async

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

Source code in maxapi/types/chats.py
async def list_all(
    self,
    *,
    count: int = 100,
) -> builtins.list[ChatMember]:
    """Получить всех участников чата списком."""

    return [member async for member in self.iter_all(count=count)]

ChatAdminsManager(*, bot, chat_id)

Bases: BotMixin

High-level API для работы с администраторами чата.

Source code in maxapi/types/chats.py
def __init__(self, *, bot: Bot | None, chat_id: int) -> None:
    self.bot = bot
    self.chat_id = chat_id

iter_all() async

Итерировать по всем администраторам чата через пагинацию.

Source code in maxapi/types/chats.py
async def iter_all(self) -> AsyncIterator[ChatMember]:
    """Итерировать по всем администраторам чата через пагинацию."""

    async for member in _walk_member_pages(
        lambda marker: self.list(marker=marker)
    ):
        yield member

list_all() async

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

Source code in maxapi/types/chats.py
async def list_all(self) -> builtins.list[ChatMember]:
    """Получить всех администраторов чата списком."""

    return [member async for member in self.iter_all()]

Chat

Bases: FetchableMixin, BaseModel, BotMixin, PeerShortcutMixin, ChatActionShortcutMixin

Модель чата.

Attributes:

Name Type Description
chat_id int

Уникальный идентификатор чата.

type ChatType

Тип чата.

status ChatStatus

Статус чата.

title str | None

Название чата.

icon Icon | None

Иконка чата. Может быть None.

last_event_time int

Временная метка последнего события в чате.

participants_count int

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

owner_id int | None

Идентификатор владельца чата.

participants dict[str, datetime] | None

Словарь участников с временными метками. Может быть None.

is_public bool

Флаг публичности чата.

link str | None

Ссылка на чат. Может быть None.

description str | None

Описание чата. Может быть None.

dialog_with_user User | None

Пользователь, с которым ведется диалог. Может быть None.

messages_count int | None

Количество сообщений в чате. Может быть None.

chat_message_id str | None

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

pinned_message Message | None

Закрепленное сообщение. Может быть None.

members property

Доступ к high-level операциям над участниками чата.

admins property

Доступ к high-level операциям над администраторами чата.

convert_timestamps(value) classmethod

Преобразовать временные метки участников из миллисекунд в объекты datetime.

Parameters:

Name Type Description Default
value dict[str, int] | None

Словарь с временными метками в миллисекундах. Может быть None, если участников нет.

required

Returns:

Type Description
dict[str, datetime | None] | None

Optional[Dict[str, Optional[datetime]]]: Словарь с временными метками в формате datetime. Может быть None, если входное значение было None.

Source code in maxapi/types/chats.py
@field_validator("participants", mode="before")
@classmethod
def convert_timestamps(
    cls,
    value: dict[str, int] | None,
) -> dict[str, datetime | None] | None:
    """
    Преобразовать временные метки участников из миллисекунд
    в объекты datetime.

    Args:
        value: Словарь с временными
            метками в миллисекундах. Может быть None, если участников нет.

    Returns:
        Optional[Dict[str, Optional[datetime]]]: Словарь с
            временными метками в формате datetime. Может быть None,
            если входное значение было None.
    """
    if value is None:
        return None

    return {key: from_ms(ts) for key, ts in value.items()}

serialize_participants(value, info)

Serialize participants dict: datetime -> milliseconds

Source code in maxapi/types/chats.py
@field_serializer("participants")
def serialize_participants(self, value: dict[str, datetime] | None, info):
    """Serialize participants dict: datetime -> milliseconds"""
    if value is None:
        return None
    return {key: to_ms(dt) for key, dt in value.items()}

edit(*, icon=None, title=None, pin=None, notify=None) async

Изменить данные чата через текущий объект.

Source code in maxapi/types/chats.py
async def edit(
    self,
    *,
    icon: PhotoAttachmentRequestPayload | None = None,
    title: str | None = None,
    pin: Message | str | None = None,
    notify: bool | None = None,
) -> Chat:
    """Изменить данные чата через текущий объект."""

    pin_message_id = None if pin is None else self._resolve_message_id(pin)

    return await self._ensure_bot().edit_chat(
        chat_id=self.chat_id,
        icon=icon,
        title=title,
        pin=pin_message_id,
        notify=notify,
    )

rename(title, *, notify=None) async

Переименовать чат.

Source code in maxapi/types/chats.py
async def rename(
    self,
    title: str,
    *,
    notify: bool | None = None,
) -> Chat:
    """Переименовать чат."""

    return await self.edit(title=title, notify=notify)

set_title(title, *, notify=None) async

Alias для rename() с более явной семантикой.

Source code in maxapi/types/chats.py
async def set_title(
    self,
    title: str,
    *,
    notify: bool | None = None,
) -> Chat:
    """Alias для rename() с более явной семантикой."""

    return await self.rename(title, notify=notify)

set_icon(icon, *, notify=None) async

Alias для edit(icon=...).

Source code in maxapi/types/chats.py
async def set_icon(
    self,
    icon: PhotoAttachmentRequestPayload,
    *,
    notify: bool | None = None,
) -> Chat:
    """Alias для edit(icon=...)."""

    return await self.edit(icon=icon, notify=notify)

fetch_pinned_message() async

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

Source code in maxapi/types/chats.py
async def fetch_pinned_message(self) -> Message | None:
    """Получить актуально закрепленное сообщение."""

    result = await self._ensure_bot().get_pin_message(self.chat_id)
    return result.message

pin(message, *, notify=None) async

Закрепить сообщение по объекту Message или message_id.

Source code in maxapi/types/chats.py
async def pin(
    self,
    message: Message | str,
    *,
    notify: bool | None = None,
) -> PinnedMessage:
    """Закрепить сообщение по объекту Message или message_id."""

    return await self._ensure_bot().pin_message(
        chat_id=self.chat_id,
        message_id=self._resolve_message_id(message),
        notify=notify,
    )

unpin() async

Снять закрепленное сообщение.

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

    return await self._ensure_bot().delete_pin_message(self.chat_id)

history(*, message_ids=None, from_time=None, to_time=None, count=50) async

Получить историю сообщений текущего чата.

Source code in maxapi/types/chats.py
async def history(
    self,
    *,
    message_ids: list[str] | None = None,
    from_time: datetime | int | None = None,
    to_time: datetime | int | None = None,
    count: int = 50,
) -> Messages:
    """Получить историю сообщений текущего чата."""

    return await self._ensure_bot().get_messages(
        chat_id=self.chat_id,
        message_ids=message_ids,
        from_time=from_time,
        to_time=to_time,
        count=count,
    )

leave() async

Удалить бота из текущего чата.

Source code in maxapi/types/chats.py
async def leave(self) -> DeletedBotFromChat:
    """Удалить бота из текущего чата."""

    return await self._ensure_bot().delete_me_from_chat(self.chat_id)

delete() async

Удалить текущий чат.

Source code in maxapi/types/chats.py
async def delete(self) -> DeletedChat:
    """Удалить текущий чат."""

    return await self._ensure_bot().delete_chat(self.chat_id)

Chats

Bases: BaseModel

Модель списка чатов.

Attributes:

Name Type Description
chats list[Chat]

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

marker int | None

Маркер для пагинации. Может быть None.

ChatMember

Bases: User

Модель участника чата.

Attributes:

Name Type Description
last_access_time int | None

Время последнего доступа. Может быть None.

is_owner bool | None

Флаг владельца чата. Может быть None.

is_admin bool | None

Флаг администратора чата. Может быть None.

join_time int | None

Время присоединения к чату. Может быть None.

permissions list[ChatPermission] | None

Список разрешений участника. Может быть None.

alias str | None

Заголовок, который будет показан на клиент. Может быть None.