EnotPRO Logo EnotPRO

GetChatMember

GetChatMember — получает информацию об участнике чата Telegram.

📝 Назначение

Используется для получения статуса пользователя в чате, его прав, информации о блокировках и ограничениях.

Когда это нужно:

  • Проверить, является ли пользователь администратором
  • Узнать, забанен ли пользователь в чате
  • Получить информацию о временных ограничениях (тайм-аут)
  • Проверить права бота в чате

⚙️ Параметры

Параметр Тип Обязательный Описание
chat.id Integer/String ✅ Да ID чата/канала или @username
user.id Integer ✅ Да ID пользователя

📍 Результат

После выполнения реакции результат доступен в переменной:

${response.result}

Основные поля ответа:

Поле Тип Описание
status String Статус участника (см. таблицу ниже)
user Object Информация о пользователе (id, first_name, username и т.д.)
is_anonymous Boolean Скрыт ли администратор (анонимный режим)
custom_title String Пользовательский титул (для администраторов)
until_date Integer Unix-время снятия блокировки/ограничения
is_member Boolean Состоит ли в чате (для restricted)

Права администратора (для status = administrator)

Поле Описание
can_be_edited Может ли быть отредактирован
can_manage_chat Полный доступ к управлению чатом
can_change_info Может изменять название и аватар чата
can_delete_messages Может удалять сообщения
can_invite_users Может приглашать участников
can_restrict_members Может блокировать и ограничивать
can_promote_members Может назначать администраторов
can_pin_messages Может закреплять сообщения
can_manage_topics Может управлять темами форума

Права для ограниченного пользователя (status = restricted)

Поле Описание
can_send_messages Может отправлять текстовые сообщения
can_send_media_messages Может отправлять медиа
can_send_polls Может отправлять опросы
can_send_other_messages Может отправлять стикеры, GIF и т.д.
can_add_web_page_previews Может добавлять превью ссылок

📊 Возможные значения status

Статус Описание
creator Владелец чата (создатель)
administrator Администратор чата
member Обычный участник
restricted Участник с ограничениями (тайм-аут)
left Покинул чат или никогда не был
kicked Исключён из чата (забанен)

📥 Примеры ответов

Статус: creator (владелец чата)

{
  "ok": true,
  "result": {
    "status": "creator",
    "user": {
      "id": 888999000,
      "is_bot": false,
      "first_name": "Иван",
      "last_name": "Создатель",
      "username": "owner_user"
    },
    "is_anonymous": false,
    "custom_title": "Основатель"
  }
}

Статус: administrator (администратор)

{
  "ok": true,
  "result": {
    "status": "administrator",
    "user": {
      "id": 111222333,
      "is_bot": false,
      "first_name": "Пётр",
      "last_name": "Администратор",
      "username": "admin_user"
    },
    "can_be_edited": true,
    "can_manage_chat": true,
    "can_delete_messages": true,
    "can_restrict_members": true,
    "can_promote_members": false,
    "can_change_info": true,
    "can_invite_users": true,
    "can_pin_messages": true,
    "can_manage_topics": true,
    "custom_title": "Модератор"
  }
}

Статус: member (обычный участник)

{
  "ok": true,
  "result": {
    "status": "member",
    "user": {
      "id": 555666777,
      "is_bot": false,
      "first_name": "Анна",
      "last_name": "Участник",
      "username": "simple_member"
    }
  }
}

Статус: restricted (ограниченный участник)

{
  "ok": true,
  "result": {
    "status": "restricted",
    "is_member": true,
    "can_send_messages": true,
    "can_send_media_messages": false,
    "can_send_polls": false,
    "can_send_other_messages": false,
    "can_add_web_page_previews": false,
    "can_change_info": false,
    "can_invite_users": false,
    "can_pin_messages": false,
    "can_manage_topics": false,
    "until_date": 1725120000,
    "user": {
      "id": 2013629317,
      "is_bot": false,
      "first_name": "Олег",
      "last_name": "Ограниченный",
      "username": "restricted_user"
    }
  }
}

Статус: left (покинул чат)

{
  "ok": true,
  "result": {
    "status": "left",
    "user": {
      "id": 987654321,
      "is_bot": false,
      "first_name": "Дмитрий",
      "last_name": "Покинувший",
      "username": "left_user"
    }
  }
}

Статус: kicked (забанен)

{
  "ok": true,
  "result": {
    "status": "kicked",
    "until_date": 1725120000,
    "user": {
      "id": 112233445,
      "is_bot": false,
      "first_name": "Сергей",
      "last_name": "Заблокированный",
      "username": "kicked_user"
    }
  }
}

📅 Поле until_date

Для статусов kicked (забанен) и restricted (ограничен) в ответе приходит поле until_date — Unix timestamp (количество секунд с 1 января 1970 года), когда блокировка или ограничение будут автоматически сняты.

Значение Значение
until_date == 0 Ограничение действует бессрочно
until_date > текущего времени Ограничение активно до указанной даты

🔐 Требуемые права бота

Условие Возможность
Бот — администратор чата Полная информация (все статусы, права, until_date)
Бот — не администратор Только базовая информация (member или left)

⚠️ Важные ограничения

1. Права бота

Для получения полной информации об участнике группы (статусы restricted, kicked, administrator) бот должен быть администратором этой группы. Если бот не администратор, он получит только базовую информацию (статус member или left).

2. Лимиты Telegram API

Метод getChatMember имеет ограничение — не более 30 запросов в секунду на один чат. При превышении лимита Telegram вернёт ошибку 429 Too Many Requests.

💡 Совет: Для массовых операций используйте реакции LoadChatMemberCount и LoadChatAdministrators, которые работают с кэшированными данными.

3. Условие взаимодействия

Реакция работает только для пользователей, которые хотя бы раз взаимодействовали с ботом (отправили сообщение, нажали кнопку). Для проверки пользователя, который никогда не писал боту, используйте условие isChatMember.

🧪 Примеры использования

Пример 1: Проверка статуса пользователя

Задача: Узнать, является ли пользователь администратором чата.

Реакции:

  1. GetChatMemberchat.id: ${chat.id}, user.id: ${user.id}
  2. TriggerFolder с условием: String${response.result.status} = administrator
  • Внутри: SendMessageПользователь — администратор

Пример 2: Проверка блокировки

Задача: Узнать, забанен ли пользователь в чате.

Реакции:

  1. GetChatMemberchat.id: ${chat.id}, user.id: ${user.id}
  2. TriggerFolder с условием: String${response.result.status} = kicked
  • Внутри: SendMessageПользователь забанен до ${response.result.until_date}

Пример 3: Проверка прав бота

Задача: Узнать, есть ли у бота право блокировать пользователей.

Реакции:

  1. GetChatMemberchat.id: ${chat.id}, user.id: ${bot.id}
  2. TriggerFolder с условием: Bool${response.result.can_restrict_members} = true
  • Внутри: SendMessageБот может блокировать участников

🔗 Связанные реакции

Реакция Назначение
GetChatAdministrators Получить всех администраторов
GetChatMemberCount Получить количество участников
LoadChatMemberCount Загрузить численность из кэша
BanChatMember Заблокировать пользователя
RestrictChatMember Ограничить пользователя

🔗 Связанные разделы

Раздел Описание
Обработчики «Вход/выход» Отслеживание изменений статуса
Условия Для проверки статуса

🔗 Ссылка на официальную документацию

getChatMember — Telegram Bot API

© 2025 EnotPRO. Все права защищены.