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