Описание
Используйте этот метод для получения информации об участнике чата. Метод гарантированно работает для других пользователей только в том случае, если бот является администратором в чате. При успешном выполнении возвращает объект ChatMember.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Целое число или строка | Да | Уникальный идентификатор целевого чата или имя пользователя целевой супергруппы или канала (в формате @channelusername) |
| user_id | Целое число | Да | Уникальный идентификатор целевого пользователя |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
// Пример 1: Получение информации о пользователе в группе/супергруппе
$chatId = -1001234567890; // ID группы (отрицательное число) или @username
$userId = 123456789; // ID пользователя
// Подготовка данных
$data = [
'chat_id' => $chatId,
'user_id' => $userId
];
// Отправка запроса
$ch = curl_init($apiUrl . 'getChatMember');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: multipart/form-data']);
$response = curl_exec($ch);
curl_close($ch);
// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
$chatMember = $result['result'];
// Пример использования данных
echo "User ID: " . $chatMember['user']['id'] . PHP_EOL;
echo "First Name: " . $chatMember['user']['first_name'] . PHP_EOL;
echo "Status: " . $chatMember['status'] . PHP_EOL;
// Проверка статуса пользователя
switch ($chatMember['status']) {
case 'creator':
echo "Пользователь является создателем чата" . PHP_EOL;
break;
case 'administrator':
echo "Пользователь является администратором" . PHP_EOL;
// Дополнительные поля для администратора
if ($chatMember['can_post_messages'] ?? false) {
echo "Может публиковать сообщения" . PHP_EOL;
}
break;
case 'member':
echo "Пользователь является участником" . PHP_EOL;
break;
case 'restricted':
echo "Пользователь ограничен" . PHP_EOL;
break;
case 'left':
echo "Пользователь покинул чат" . PHP_EOL;
break;
case 'kicked':
echo "Пользователь заблокирован" . PHP_EOL;
break;
}
} else {
echo "Ошибка: " . $result['description'] . PHP_EOL;
}
// Пример 2: Использование с username канала
$channelUsername = '@my_channel';
$data2 = [
'chat_id' => $channelUsername,
'user_id' => $userId
];
// Пример 3: Функция-обертка для удобного использования
function getChatMemberInfo($botToken, $chatId, $userId) {
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
$data = [
'chat_id' => $chatId,
'user_id' => $userId
];
$ch = curl_init($apiUrl . 'getChatMember');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => ['Content-Type: multipart/form-data']
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
return json_decode($response, true);
}
return ['ok' => false, 'description' => 'Network error'];
}
// Использование функции
$memberInfo = getChatMemberInfo($botToken, $chatId, $userId);
if ($memberInfo['ok']) {
// Работа с данными о пользователе
$user = $memberInfo['result']['user'];
$status = $memberInfo['result']['status'];
// Пример: проверка, является ли пользователь администратором
$isAdmin = in_array($status, ['creator', 'administrator']);
echo "Is admin: " . ($isAdmin ? 'Yes' : 'No') . PHP_EOL;
}
// Пример 4: Проверка конкретных прав администратора
if ($memberInfo['ok'] && $memberInfo['result']['status'] === 'administrator') {
$adminRights = $memberInfo['result'];
$rights = [
'can_change_info' => 'Может изменять информацию чата',
'can_post_messages' => 'Может публиковать сообщения',
'can_edit_messages' => 'Может редактировать сообщения',
'can_delete_messages' => 'Может удалять сообщения',
'can_invite_users' => 'Может приглашать пользователей',
'can_restrict_members' => 'Может ограничивать участников',
'can_pin_messages' => 'Может закреплять сообщения',
'can_promote_members' => 'Может назначать администраторов'
];
foreach ($rights as $key => $description) {
if (isset($adminRights[$key]) && $adminRights[$key]) {
echo $description . PHP_EOL;
}
}
}
?>
python
import requests
def get_chat_member(bot_token, chat_id, user_id):
"""
Получает информацию об участнике чата.
Args:
bot_token (str): Токен вашего бота
chat_id (int or str): ID чата или username канала/супергруппы
user_id (int): ID пользователя
Returns:
dict: Объект ChatMember или None в случае ошибки
"""
url = f"https://api.telegram.org/bot{bot_token}/getChatMember"
params = {
'chat_id': chat_id,
'user_id': user_id
}
try:
response = requests.post(url, json=params)
response.raise_for_status()
return response.json()['result']
except requests.exceptions.RequestException as e:
print(f"Ошибка при выполнении запроса: {e}")
return None
except KeyError:
print("Ошибка в ответе API")
return None
# Пример использования
if __name__ == "__main__":
# Замените на реальные значения
BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"
CHAT_ID = -1001234567890 # или "@channelusername"
USER_ID = 123456789
member_info = get_chat_member(BOT_TOKEN, CHAT_ID, USER_ID)
if member_info:
print(f"Статус пользователя: {member_info.get('status')}")
print(f"Информация о пользователе: {member_info.get('user', {})}")
История изменений
- API 2.1.. Добавлен метод getChatMember
Дополнительно
- ChatMember - Объект, описывающий информацию об участнике чата и его статусе в Telegram.