Обзор и права
Администрирование чата
Если бот назначен администратором группы или канала, ему доступны методы управления чатом. Права проверяются ровно так же, как у обычного пользователя-администратора.
Правила
- Бот не может выдать другому участнику права, которых нет у него самого
- Бот не может изменять роль владельца чата
- Администратор не может модерировать администратора, назначенного раньше или равного по правам — исключение только у владельца
- Через API нельзя менять
username и приватность чата - Все действия попадают в журнал
getChatAdminLog
Права администратора
| Право | Что разрешает |
|---|
delete_messages | Удалять чужие сообщения |
remove_users | Исключать участников |
block_users | Блокировать участников |
pin_messages | Закреплять и откреплять |
invite_users | Создавать и отзывать ссылки-приглашения |
change_info | Менять название, описание, фото, права и медленный режим |
add_admins | Назначать и снимать администраторов, задавать звания |
post_messages | Публиковать в канале |
edit_messages | Редактировать сообщения канала |
Метод → требуемое право
| Метод | Право |
|---|
setChatTitle, setChatDescription, setChatPhoto, deleteChatPhoto | change_info |
setChatPermissions, setChatSlowMode | change_info |
pinMessage, unpinMessage | pin_messages |
banChatMember, unbanChatMember | block_users |
kickChatMember | remove_users |
promoteChatMember, demoteChatMember, setChatAdministratorCustomTitle | add_admins |
deleteMessage (чужое сообщение) | delete_messages |
exportChatInviteLink, createChatInviteLink, revokeChatInviteLink | invite_users |
getChatAdminLog | роль admin или owner |
getChat, getChatMember, getChatMemberCount, getChatAdministrators | — |
Формат ошибки
{ "ok": false, "error_code": 403, "description": "Forbidden: no change_info permission" }
| Код | Причина |
|---|
| 400 | Нет обязательного параметра или действие невозможно (например, снять владельца) |
| 403 | Бот не в чате, не администратор или нет конкретного права |
| 404 | Чат, участник, сообщение или ссылка не найдены |
Проверка своих прав
me = await bot.get_me()
member = await bot.get_chat_member(chat_id, me.id)
if member.status not in ("creator", "administrator"):
return
if member.permissions.pin_messages:
await bot.pin_message(chat_id, message_id)