from datetime import datetime
from maxo.enums.chat_admin_permission import ChatAdminPermission
from maxo.errors import AttributeIsEmptyError
from maxo.omit import Omittable, Omitted, is_defined
from maxo.types.user_with_photo import UserWithPhoto
[документация]
class ChatMember(UserWithPhoto):
"""
Объект включает общую информацию о пользователе или боте, URL аватара и описание (при наличии). Является наследником [схемы UserWithPhoto](https://dev.max.ru/docs-api/objects/UserWithPhoto). Дополнительно к ней содержит данные для пользователей-участников чата или канала. Возвращается только при вызове некоторых методов группы `/chats`, например [`GET /chats/{chatId}/members`](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members)
Args:
alias: Описание роли, которое будет отображаться на клиентском устройстве в настройках чата или канала рядом с именем пользователя
Если пользователь администратор или владелец и ему не установлено это название, то поле не передаётся, клиентское устройство на своей стороне подменит значение на соответствующее: "владелец" или "админ"
is_admin: Является ли пользователь администратором группового чата или канала
is_owner: Является ли пользователь владельцем группового чата или канала
join_time: Дата присоединения к чату в формате Unix time
last_access_time: Время последней активности пользователя в чате. Может быть устаревшим для суперчатов (равно времени вступления)
permissions: Перечень прав доступа пользователя или бота, если тот является администратором группового чата или канала. Для обычных участников чата или канала поле не возвращается
Если право назначается действующему администратору, то его текущие права будут обновлены в соответствии с переданным списком. Ниже приведено краткое описание всех прав - подробнее читайте [в разделе «Доступные права администратора»](https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members/admins)
**Краткое описание доступных прав администратора**:
- `read_all_messages` - читать все сообщения в канале или групповом чате
- `edit` - редактировать посты в каналах (для групповых чатов недоступно). Ранее вместо `edit` в API использовалось `edit_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторам используйте `edit`
- `delete` - удалять посты (для групповых чатов недоступно). Ранее вместо `delete` в API использовалось `delete_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторам используйте `delete`
- `write` - редактировать и удалять сообщения в групповых чатах, а также писать посты в каналах. Ранее вместо `write` в API использовалось `post_edit_delete_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторам используйте `write`
- `pin_message` - закреплять сообщение
- `change_chat_info` - изменять информацию о канале или групповом чате
- `add_remove_members` - добавлять и удалять участников группового чата или подписчиков канала
- `add_admins` - добавлять и удалять администраторов группового чата или канала
- `edit_link` - изменять ссылку на групповой чат (для каналов недоступно)
- `can_call` - звонить в групповом чате (для каналов недоступно)
- `view_stats` - видеть количество просмотров постов в каналах (для групповых чатов недоступно). Право есть только у пользователей - боты не могут посмотреть статистику
"""
is_admin: bool
"""Является ли пользователь администратором группового чата или канала"""
is_owner: bool
"""Является ли пользователь владельцем группового чата или канала"""
join_time: datetime
"""Дата присоединения к чату в формате Unix time"""
last_access_time: datetime
"""Время последней активности пользователя в чате. Может быть устаревшим для суперчатов (равно времени вступления)"""
permissions: list[ChatAdminPermission] | None = None
"""
Перечень прав доступа пользователя или бота, если тот является администратором группового чата или канала. Для обычных участников чата или канала поле не возвращается
Если право назначается действующему администратору, то его текущие права будут обновлены в соответствии с переданным списком. Ниже приведено краткое описание всех прав - подробнее читайте [в разделе «Доступные права администратора»](https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members/admins)
**Краткое описание доступных прав администратора**:
- `read_all_messages` - читать все сообщения в канале или групповом чате
- `edit` - редактировать посты в каналах (для групповых чатов недоступно). Ранее вместо `edit` в API использовалось `edit_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторам используйте `edit`
- `delete` - удалять посты (для групповых чатов недоступно). Ранее вместо `delete` в API использовалось `delete_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторам используйте `delete`
- `write` - редактировать и удалять сообщения в групповых чатах, а также писать посты в каналах. Ранее вместо `write` в API использовалось `post_edit_delete_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторам используйте `write`
- `pin_message` - закреплять сообщение
- `change_chat_info` - изменять информацию о канале или групповом чате
- `add_remove_members` - добавлять и удалять участников группового чата или подписчиков канала
- `add_admins` - добавлять и удалять администраторов группового чата или канала
- `edit_link` - изменять ссылку на групповой чат (для каналов недоступно)
- `can_call` - звонить в групповом чате (для каналов недоступно)
- `view_stats` - видеть количество просмотров постов в каналах (для групповых чатов недоступно). Право есть только у пользователей - боты не могут посмотреть статистику
"""
alias: Omittable[str] = Omitted()
"""
Описание роли, которое будет отображаться на клиентском устройстве в настройках чата или канала рядом с именем пользователя
Если пользователь администратор или владелец и ему не установлено это название, то поле не передаётся, клиентское устройство на своей стороне подменит значение на соответствующее: "владелец" или "админ"
"""
@property
def unsafe_alias(self) -> str:
if is_defined(self.alias):
return self.alias
raise AttributeIsEmptyError(
obj=self,
attr="alias",
)
@property
def unsafe_permissions(self) -> list[ChatAdminPermission]:
if is_defined(self.permissions):
return self.permissions
raise AttributeIsEmptyError(
obj=self,
attr="permissions",
)