🌙

Обзор и права

Администрирование чата

Если бот назначен администратором группы или канала, ему доступны методы управления чатом. Права проверяются ровно так же, как у обычного пользователя-администратора.

Правила

  • Бот не может выдать другому участнику права, которых нет у него самого
  • Бот не может изменять роль владельца чата
  • Администратор не может модерировать администратора, назначенного раньше или равного по правам — исключение только у владельца
  • Через API нельзя менять username и приватность чата
  • Все действия попадают в журнал getChatAdminLog

Права администратора

ПравоЧто разрешает
delete_messagesУдалять чужие сообщения
remove_usersИсключать участников
block_usersБлокировать участников
pin_messagesЗакреплять и откреплять
invite_usersСоздавать и отзывать ссылки-приглашения
change_infoМенять название, описание, фото, права и медленный режим
add_adminsНазначать и снимать администраторов, задавать звания
post_messagesПубликовать в канале
edit_messagesРедактировать сообщения канала

Метод → требуемое право

МетодПраво
setChatTitle, setChatDescription, setChatPhoto, deleteChatPhotochange_info
setChatPermissions, setChatSlowModechange_info
pinMessage, unpinMessagepin_messages
banChatMember, unbanChatMemberblock_users
kickChatMemberremove_users
promoteChatMember, demoteChatMember, setChatAdministratorCustomTitleadd_admins
deleteMessage (чужое сообщение)delete_messages
exportChatInviteLink, createChatInviteLink, revokeChatInviteLinkinvite_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)
77 просмотров