Метод getUserProfilePhotos

Метод для получения списка фотографий профиля пользователя с возможностью пагинации.

Описание

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

Параметр Тип Обязательный Описание
user_id Integer Да Уникальный идентификатор целевого пользователя
offset Integer Необязательный Порядковый номер первой возвращаемой фотографии. По умолчанию возвращаются все фотографии.
limit Integer Необязательный Ограничивает количество получаемых фотографий. Принимаются значения от 1 до 100. По умолчанию 100.

Примеры

php

<?php

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

// ID пользователя, для которого получаем фото профиля
$userId = 123456789;

// Параметры запроса (offset и limit опциональны)
$params = [
    'user_id' => $userId,
    'offset' => 0,    // Начинаем с первого фото
    'limit' => 10     // Получаем максимум 10 фото
];

// Отправка запроса
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'getUserProfilePhotos');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);
curl_close($ch);

// Обработка ответа
$result = json_decode($response, true);

if ($result['ok']) {
    $profilePhotos = $result['result'];
    
    echo "Всего фото: " . $profilePhotos['total_count'] . "\n";
    
    if ($profilePhotos['total_count'] > 0) {
        foreach ($profilePhotos['photos'] as $index => $photoSet) {
            echo "Набор фото #" . ($index + 1) . ":\n";
            
            foreach ($photoSet as $photo) {
                echo "  - file_id: " . $photo['file_id'] . "\n";
                echo "    file_size: " . ($photo['file_size'] ?? 'N/A') . "\n";
                echo "    width: " . $photo['width'] . "\n";
                echo "    height: " . $photo['height'] . "\n";
                
                // Получение прямых ссылок на файлы
                $fileUrl = getFileUrl($botToken, $photo['file_id']);
                echo "    URL: " . $fileUrl . "\n";
            }
            echo "\n";
        }
    } else {
        echo "У пользователя нет фото профиля\n";
    }
} else {
    echo "Ошибка: " . $result['description'] . "\n";
}

// Функция для получения ссылки на файл
function getFileUrl($botToken, $fileId) {
    $apiUrl = "https://api.telegram.org/bot{$botToken}/";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiUrl . 'getFile?file_id=' . $fileId);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    $result = json_decode($response, true);
    
    if ($result['ok']) {
        $filePath = $result['result']['file_path'];
        return "https://api.telegram.org/file/bot{$botToken}/{$filePath}";
    }
    
    return 'Не удалось получить ссылку';
}

?>

python

import requests

def get_user_profile_photos(bot_token, user_id, offset=None, limit=None):
    """
    Получает список фотографий профиля пользователя.
    
    Args:
        bot_token (str): Токен вашего бота
        user_id (int): Уникальный идентификатор целевого пользователя
        offset (int, optional): Порядковый номер первой возвращаемой фотографии
        limit (int, optional): Ограничение количества фотографий (1-100)
    
    Returns:
        dict: Объект UserProfilePhotos или None в случае ошибки
    """
    url = f"https://api.telegram.org/bot{bot_token}/getUserProfilePhotos"
    
    params = {
        'user_id': user_id
    }
    
    if offset is not None:
        params['offset'] = offset
    
    if limit is not None:
        if 1 <= limit <= 100:
            params['limit'] = limit
        else:
            raise ValueError("Limit must be between 1 and 100")
    
    try:
        response = requests.get(url, params=params)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"Ошибка при запросе: {e}")
        return None

# Пример использования
if __name__ == "__main__":
    # Замените на ваш токен бота и ID пользователя
    BOT_TOKEN = "YOUR_BOT_TOKEN"
    USER_ID = 123456789
    
    # Пример 1: Получить все фотографии профиля
    result = get_user_profile_photos(BOT_TOKEN, USER_ID)
    
    # Пример 2: Получить первые 5 фотографий
    # result = get_user_profile_photos(BOT_TOKEN, USER_ID, limit=5)
    
    # Пример 3: Получить фотографии начиная с 3-ей, максимум 10
    # result = get_user_profile_photos(BOT_TOKEN, USER_ID, offset=2, limit=10)
    
    if result and result.get('ok'):
        profile_photos = result['result']
        print(f"Всего фотографий: {profile_photos['total_count']}")
        
        for i, photo_group in enumerate(profile_photos['photos']):
            print(f"\nФото {i + 1}:")
            for photo in photo_group:
                print(f"  File ID: {photo['file_id']}")
                print(f"  File Size: {photo.get('file_size', 'N/A')}")
                print(f"  Width: {photo['width']} x Height: {photo['height']}")
    else:
        print("Не удалось получить фотографии профиля")

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

  • UserProfilePhotos - Объект, содержащий фотографии профиля пользователя Telegram с возможностью получения каждого изображения в нескольких размерах.
Комментарии