Метод setBusinessAccountProfilePhoto

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

Описание

Изменяет фото профиля управляемого бизнес-аккаунта. Требует права бизнес-бота can_edit_profile_photo. Возвращает True при успешном выполнении.

Параметр Тип Обязательный Описание
business_connection_id String Да Уникальный идентификатор бизнес-подключения
photo InputProfilePhoto Да Новое фото профиля для установки
is_public Boolean Опционально Передайте True, чтобы установить публичное фото, которое будет видно даже если основное фото скрыто настройками приватности бизнес-аккаунта. У аккаунта может быть только одно публичное фото.

Примеры

php

<?php

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

// Параметры запроса
$businessConnectionId = 'YOUR_BUSINESS_CONNECTION_ID';
$photoPath = '/path/to/photo.jpg';

// Подготовка данных
$postData = [
    'business_connection_id' => $businessConnectionId,
    'photo' => new CURLFile($photoPath),
    'is_public' => true // Опционально
];

// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'setBusinessAccountProfilePhoto');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
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);

// Обработка ответа
if ($response === false) {
    echo 'cURL Error: ' . curl_error($ch);
} else {
    $responseData = json_decode($response, true);
    
    if ($responseData['ok'] === true) {
        echo 'Profile photo updated successfully!';
    } else {
        echo 'Error: ' . $responseData['description'];
    }
}

curl_close($ch);

// Альтернативный вариант с использованием file_get_contents (требует allow_url_fopen)
/*
$boundary = uniqid();
$eol = "\r\n";

// Формирование multipart данных
$data = "--{$boundary}{$eol}";
$data .= "Content-Disposition: form-data; name=\"business_connection_id\"{$eol}{$eol}";
$data .= "{$businessConnectionId}{$eol}";

$data .= "--{$boundary}{$eol}";
$data .= "Content-Disposition: form-data; name=\"photo\"; filename=\"" . basename($photoPath) . "\"{$eol}";
$data .= "Content-Type: image/jpeg{$eol}{$eol}";
$data .= file_get_contents($photoPath) . $eol;

$data .= "--{$boundary}{$eol}";
$data .= "Content-Disposition: form-data; name=\"is_public\"{$eol}{$eol}";
$data .= "true{$eol}";
$data .= "--{$boundary}--{$eol}";

$context = stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => "Content-Type: multipart/form-data; boundary={$boundary}",
        'content' => $data
    ]
]);

$response = file_get_contents($apiUrl . 'setBusinessAccountProfilePhoto', false, $context);
$responseData = json_decode($response, true);

if ($responseData['ok'] === true) {
    echo 'Profile photo updated successfully!';
} else {
    echo 'Error: ' . $responseData['description'];
}
*/
?>

python

import asyncio
from telegram import Bot, InputFile
from telegram.constants import ParseMode

async def set_business_profile_photo():
    bot = Bot(token="YOUR_BOT_TOKEN")
    
    # ID бизнес-подключения
    business_connection_id = "your_business_connection_id"
    
    # Загрузка фото из файла
    with open("profile_photo.jpg", "rb") as photo_file:
        # Отправка запроса на изменение фото профиля
        result = await bot.set_business_account_profile_photo(
            business_connection_id=business_connection_id,
            photo=InputFile(photo_file),
            is_public=True  # Сделать фото публичным (опционально)
        )
    
    print(f"Результат: {result}")
    return result

# Для синхронного использования
def set_business_profile_photo_sync():
    import asyncio
    asyncio.run(set_business_profile_photo())

# Альтернативный вариант с использованием InputProfilePhoto
async def set_business_profile_photo_alternative():
    bot = Bot(token="YOUR_BOT_TOKEN")
    
    # Загрузка фото по URL
    result = await bot.set_business_account_profile_photo(
        business_connection_id="your_business_connection_id",
        photo="https://example.com/profile_photo.jpg",
        is_public=False
    )
    
    return result

# Пример использования
if __name__ == "__main__":
    # Асинхронный вызов
    asyncio.run(set_business_profile_photo())
    
    # Или синхронный вызов
    # set_business_profile_photo_sync()

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

  • API 9.0. Добавлен метод setBusinessAccountProfilePhoto

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

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