Метод getChatAdministrators

Получает список администраторов чата, исключая ботов.

Описание

Используйте этот метод, чтобы получить список администраторов в чате, которые не являются ботами. Возвращает массив объектов ChatMember.

Параметр Тип Обязательный Описание
chat_id Целое число или строка Да Уникальный идентификатор целевого чата или имя пользователя целевой супергруппы или канала (в формате @channelusername)

Примеры

php

<?php

$botToken = 'YOUR_BOT_TOKEN';
$chatId = 'CHAT_ID_OR_USERNAME'; // Например: 123456789 или '@channelname'

$apiUrl = "https://api.telegram.org/bot{$botToken}/getChatAdministrators";

$data = [
    'chat_id' => $chatId
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Отключить для локального тестирования

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode != 200) {
    echo "Ошибка HTTP: {$httpCode}\n";
    echo "Ответ: {$response}\n";
    curl_close($ch);
    exit;
}

curl_close($ch);

$result = json_decode($response, true);

if (!$result['ok']) {
    echo "Ошибка API: {$result['description']}\n";
    exit;
}

$administrators = $result['result'];

echo "Администраторы чата:\n";
foreach ($administrators as $admin) {
    $user = $admin['user'];
    $status = $admin['status'];
    
    echo "ID: {$user['id']}\n";
    echo "Имя: {$user['first_name']}\n";
    if (isset($user['last_name'])) {
        echo "Фамилия: {$user['last_name']}\n";
    }
    if (isset($user['username'])) {
        echo "Юзернейм: @{$user['username']}\n";
    }
    echo "Статус: {$status}\n";
    echo "---\n";
}

// Альтернативный вариант с использованием file_get_contents
/*
$options = [
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: application/x-www-form-urlencoded',
        'content' => http_build_query($data)
    ]
];

$context = stream_context_create($options);
$response = file_get_contents($apiUrl, false, $context);
$result = json_decode($response, true);
*/

python

import requests

def get_chat_administrators(bot_token, chat_id):
    """
    Получает список администраторов чата (не ботов).
    
    Args:
        bot_token (str): Токен вашего бота
        chat_id (int or str): ID чата или username канала/супергруппы
    
    Returns:
        list: Список объектов ChatMember или None в случае ошибки
    """
    url = f"https://api.telegram.org/bot{bot_token}/getChatAdministrators"
    
    params = {
        'chat_id': chat_id
    }
    
    try:
        response = requests.post(url, params=params)
        response.raise_for_status()
        result = response.json()
        
        if result['ok']:
            return result['result']
        else:
            print(f"Ошибка: {result.get('description')}")
            return None
            
    except requests.exceptions.RequestException as e:
        print(f"Ошибка запроса: {e}")
        return None
    except ValueError as e:
        print(f"Ошибка парсинга JSON: {e}")
        return None

# Пример использования:
if __name__ == "__main__":
    # Замените на ваш токен и ID чата
    BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"
    CHAT_ID = "@your_channel"  # или 123456789 для ID чата
    
    admins = get_chat_administrators(BOT_TOKEN, CHAT_ID)
    
    if admins:
        print(f"Найдено администраторов: {len(admins)}")
        for admin in admins:
            user = admin['user']
            status = admin['status']
            print(f"- {user.get('first_name', '')} {user.get('last_name', '')} "
                  f"(@{user.get('username', 'нет')}): {status}")

История изменений

  • API 2.1.. Добавлен метод getChatAdministrators

Дополнительно

  • ChatMember - Объект, описывающий информацию об участнике чата и его статусе в Telegram.
Комментарии