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: Проверка статуса пользователя
Задача: Узнать, является ли пользователь администратором чата.
Реакции:
GetChatMember→chat.id:${chat.id},user.id:${user.id}TriggerFolderс условием:String→${response.result.status}=administrator
- Внутри:
SendMessage→Пользователь — администратор
Пример 2: Проверка блокировки
Задача: Узнать, забанен ли пользователь в чате.
Реакции:
GetChatMember→chat.id:${chat.id},user.id:${user.id}TriggerFolderс условием:String→${response.result.status}=kicked
- Внутри:
SendMessage→Пользователь забанен до ${response.result.until_date}
Пример 3: Проверка прав бота
Задача: Узнать, есть ли у бота право блокировать пользователей.
Реакции:
GetChatMember→chat.id:${chat.id},user.id:${bot.id}TriggerFolderс условием:Bool→${response.result.can_restrict_members}=true
- Внутри:
SendMessage→Бот может блокировать участников
🔗 Связанные реакции
| Реакция | Назначение |
|---|---|
| GetChatAdministrators | Получить всех администраторов |
| GetChatMemberCount | Получить количество участников |
| LoadChatMemberCount | Загрузить численность из кэша |
| BanChatMember | Заблокировать пользователя |
| RestrictChatMember | Ограничить пользователя |
🔗 Связанные разделы
| Раздел | Описание |
|---|---|
| Обработчики «Вход/выход» | Отслеживание изменений статуса |
| Условия | Для проверки статуса |