from maxo.bot.methods.base import MaxoMethod
from maxo.bot.methods.markers import Body, Path
from maxo.omit import Omittable, Omitted
from maxo.types.chat_admin import ChatAdmin
from maxo.types.simple_query_result import SimpleQueryResult
[документация]
class SetAdmins(MaxoMethod[SimpleQueryResult]):
"""
Назначить администратора группового чата или канала
Выдаёт пользователям и ботам, которые являются участниками чата или подписчикам канала, права администратора
Бот, чей токен `access_token` используется для авторизации, должен быть администратором этого чата или канала с соответствующим правом `add_admins`. Чтобы получить информацию о правах бота, используйте [GET /chats/-chatId-/members/admins](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/admins)
Права, которые можно назначить, зависят от того, где (канал или чат) и кому (пользователь или бот) выданы
Список прав передаётся в теле запроса в массиве `admins.permissions`. Если вы хотите изменить назначенные права, вызовите повторно текущий метод: в теле запроса передайте обновлённый список прав. При повторном вызове логика работы метода соответствует `PUT`: права администратора будут обновлены полностью в соответствии с переданными в запросе
Пример запроса:
```bash
curl -X POST "https://platform-api.max.ru/chats/{chatId}/members/admins" \
-H "Authorization: {access_token}" \
-H "Content-Type: application/json" \
-d '{
"admins": [
{
"user_id": "{user_id}",
"permissions": [
"read_all_messages",
"add_remove_members",
"add_admins",
"change_chat_info",
"pin_message",
"write"
],
"alias": "администраторам"
}
]
}'
```
## Доступные права администратора
- `read_all_messages` - читать все сообщения в канале или групповом чате. Право можно назначить пользователям и ботам. Без этого права не получится управлять сообщениями: закреплять (`pin_message`), редактировать и удалять посты в каналах (`edit` и `delete`) и групповых чатах (`write`). Также это право важно при назначении ботов: без него тот не будет получать обновления через [Webhook](https://dev.max.ru/docs-api/methods/POST/subscriptions). Управление `read_all_messages` в интерфейсе мессенджера доступно только для ботов в групповых чатах
- `edit` - редактировать посты в каналах (для групповых чатов недоступно). Право можно назначить пользователям и ботам, только если уже есть право `read_all_messages` или вместе с ним - иначе вернётся ошибка. Ранее вместо `edit` в API использовалось `edit_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторов используйте `edit`. Управление `edit` также дублируется в интерфейсе мессенджера
- `delete` - удалять посты (для групповых чатов недоступно). Право можно назначить пользователям и ботам, только если уже есть право `read_all_messages` или вместе с ним - иначе вернётся ошибка. Ранее вместо `delete` в API использовалось `delete_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторов используйте `delete`. Управление `delete` также дублируется в интерфейсе мессенджера
- `write` - редактировать и удалять сообщения в групповых чатах, а также писать посты в каналах. Право можно назначить пользователям и ботам, только если уже есть право `read_all_messages` или вместе с ним - иначе вернётся ошибка. Ранее вместо `write` в API использовалось `post_edit_delete_message` - в ответе могут возвращаться оба значения, однако при назначении новых прав администраторам используйте `write`. Управление `write` также дублируется в интерфейсе мессенджера
- `pin_message` - закреплять сообщение. Право можно назначить пользователям и ботам, только если уже есть право `read_all_messages` или вместе с ним - иначе вернётся ошибка
- `change_chat_info` - изменять информацию о канале или групповом чате. Право доступно для пользователей и ботов
- `add_remove_members` - добавлять и удалять участников группового чата или подписчиков канала. Право доступно для пользователей и ботов. Управление `add_remove_members` также дублируется в интерфейсе мессенджера
- `add_admins` - добавлять и удалять администраторов группового чата или канала. Право доступно для пользователей и ботов. Управление `add_admins` дублируется в интерфейсе мессенджера
- `edit_link` - изменять ссылку на групповой чат (для каналов недоступно). Право есть для пользователей и ботов. Управление `edit_link` также дублируется в интерфейсе мессенджера
- `can_call` - звонить в групповом чате (для каналов недоступно). Право есть у пользователей и ботов - проставляется автоматически при назначении администратором. Управление `can_call` в интерфейсе мессенджера не дублируется
- `view_stats` - видеть количество просмотров постов в каналах (для групповых чатов недоступно). Право есть только у пользователей - боты не могут посмотреть статистику. Управление `view_stats` в интерфейсе мессенджера не дублируется
Args:
admins: Список пользователей и ботов, которые получат права администратора группового чата или канала
chat_id: ID группового чата или канала
marker: Указатель на следующую страницу данных
Источник: https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members/admins
"""
__url__ = "chats/{chat_id}/members/admins"
__method__ = "post"
chat_id: Path[int]
"""ID группового чата или канала"""
admins: Body[list[ChatAdmin]]
"""Список пользователей и ботов, которые получат права администратора группового чата или канала"""
marker: Body[Omittable[int | None]] = Omitted()
"""Указатель на следующую страницу данных"""