Метод setChatPhoto

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

Описание

Используйте этот метод, чтобы установить новую фотографию профиля для чата. Фотографии нельзя изменить для личных чатов. Бот должен быть администратором в чате для работы этого метода и иметь соответствующие права администратора. Возвращает True при успешном выполнении.

Параметр Тип Обязательный Описание
chat_id Целое число или строка Да Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername)
photo InputFile Да Новая фотография чата, загружаемая с использованием multipart/form-data

Примеры

php

<?php

$botToken = 'YOUR_BOT_TOKEN';
$chatId = 'CHAT_ID_OR_USERNAME'; // Например: -1001234567890 или "@channelusername"

// Путь к файлу фото
$photoPath = '/path/to/photo.jpg';

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

// Проверка существования файла
if (!file_exists($photoPath)) {
    die("Файл не найден: {$photoPath}");
}

// Подготовка данных для multipart/form-data
$postFields = [
    'chat_id' => $chatId,
    'photo' => new CURLFile($photoPath, mime_content_type($photoPath), basename($photoPath))
];

// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: multipart/form-data'
]);

// Выполнение запроса
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// Проверка ошибок cURL
if (curl_errno($ch)) {
    echo 'cURL ошибка: ' . curl_error($ch);
} else {
    // Декодирование ответа
    $responseData = json_decode($response, true);
    
    if ($responseData['ok']) {
        echo "Фото чата успешно обновлено!";
    } else {
        echo "Ошибка: " . $responseData['description'];
    }
}

// Закрытие соединения
curl_close($ch);

?>

python

import requests

def set_chat_photo(bot_token, chat_id, photo_path):
    """
    Устанавливает новую фотографию профиля для чата.
    
    Args:
        bot_token (str): Токен вашего бота
        chat_id (int or str): ID чата или username канала
        photo_path (str): Путь к файлу с фотографией
    
    Returns:
        bool: True в случае успеха, иначе False
    """
    url = f"https://api.telegram.org/bot{bot_token}/setChatPhoto"
    
    with open(photo_path, 'rb') as photo_file:
        files = {'photo': photo_file}
        data = {'chat_id': chat_id}
        
        response = requests.post(url, data=data, files=files)
        
    if response.status_code == 200:
        result = response.json()
        return result.get('result', False)
    
    return False

# Пример использования:
# Установить фото для группы с ID -1001234567890
# set_chat_photo('YOUR_BOT_TOKEN', -1001234567890, 'chat_photo.jpg')

# Установить фото для канала @my_channel
# set_chat_photo('YOUR_BOT_TOKEN', '@my_channel', 'channel_photo.jpg')

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

  • API 3.1. Добавлен метод setChatPhoto

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

  • InputFile - Объект, представляющий содержимое файла для загрузки через multipart/form-data.
Комментарии