Описание
Используйте этот метод, чтобы получить список фотографий профиля пользователя. Возвращает объект 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 с возможностью получения каждого изображения в нескольких размерах.