Описание
Используйте этот метод для загрузки файла со стикером для последующего использования в методах createNewStickerSet, addStickerToSet или replaceStickerInSet (файл может быть использован многократно). При успехе возвращает загруженный File.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| user_id | Integer | Да | Идентификатор пользователя-владельца файла стикера |
| sticker | InputFile | Да | Файл со стикером в формате .WEBP, .PNG, .TGS или .WEBM. Технические требования см. на https://core.telegram.org/stickers. Подробнее об отправке файлов » |
| sticker_format | String | Да | Формат стикера, должен быть одним из: «static», «animated», «video» |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
// Параметры для uploadStickerFile
$userId = 123456789; // ID пользователя-владельца стикера
$stickerFilePath = '/path/to/sticker.webp'; // Путь к файлу стикера
$stickerFormat = 'static'; // Формат: static, animated или video
// Подготовка данных для multipart/form-data
$postData = [
'user_id' => $userId,
'sticker_format' => $stickerFormat,
'sticker' => new CURLFile($stickerFilePath)
];
// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'uploadStickerFile');
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);
curl_close($ch);
// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
$fileId = $result['result']['file_id'];
echo "Файл успешно загружен. File ID: {$fileId}\n";
// Теперь file_id можно использовать в:
// createNewStickerSet, addStickerToSet или replaceStickerInSet
// Пример:
// $stickerFileId = $fileId;
} else {
echo "Ошибка: " . $result['description'] . "\n";
}
// Альтернативный вариант с использованием библиотеки (например, telegram-bot/api)
/*
use TelegramBot\Api\BotApi;
$bot = new BotApi($botToken);
try {
$file = $bot->uploadStickerFile(
$userId,
new \CURLFile($stickerFilePath),
$stickerFormat
);
echo "File ID: " . $file->getFileId() . "\n";
} catch (\Exception $e) {
echo "Ошибка: " . $e->getMessage() . "\n";
}
*/
?>
python
import requests
from pathlib import Path
def upload_sticker_file(bot_token, user_id, sticker_path, sticker_format):
"""
Загружает файл со стикером для последующего использования.
:param bot_token: Токен бота
:param user_id: ID пользователя-владельца стикера
:param sticker_path: Путь к файлу стикера
:param sticker_format: Формат стикера ('static', 'animated', 'video')
:return: Ответ от Telegram API
"""
url = f"https://api.telegram.org/bot{bot_token}/uploadStickerFile"
# Проверяем существование файла
sticker_file = Path(sticker_path)
if not sticker_file.exists():
raise FileNotFoundError(f"Файл {sticker_path} не найден")
# Определяем MIME-тип в зависимости от формата
mime_types = {
'static': 'image/webp',
'animated': 'application/x-tgsticker',
'video': 'video/webm'
}
mime_type = mime_types.get(sticker_format)
if not mime_type:
raise ValueError(f"Неподдерживаемый формат: {sticker_format}")
# Подготавливаем данные для отправки
with open(sticker_path, 'rb') as file:
files = {
'sticker': (sticker_file.name, file, mime_type)
}
data = {
'user_id': user_id,
'sticker_format': sticker_format
}
# Отправляем запрос
response = requests.post(url, data=data, files=files)
return response.json()
# Пример использования
if __name__ == "__main__":
# Конфигурация
BOT_TOKEN = "ВАШ_ТОКЕН_БОТА"
USER_ID = 123456789 # ID пользователя
STICKER_PATH = "path/to/your/sticker.webp" # Путь к файлу стикера
STICKER_FORMAT = "static" # Формат стикера
try:
result = upload_sticker_file(BOT_TOKEN, USER_ID, STICKER_PATH, STICKER_FORMAT)
print(f"Результат: {result}")
if result.get('ok'):
file_id = result['result']['file_id']
print(f"Файл успешно загружен. File ID: {file_id}")
else:
print(f"Ошибка: {result.get('description')}")
except Exception as e:
print(f"Произошла ошибка: {e}")
История изменений
- API 3.2. Добавлен метод uploadStickerFile
- API 6.6. Обновлен метод uploadStickerFile: Заменен параметр png_sticker на параметры sticker и sticker_format
Дополнительно
- createNewStickerSet - Метод создает новый набор стикеров для пользователя, который бот сможет редактировать.
- addStickerToSet - Метод добавляет новый стикер в набор стикеров, созданный ботом, с ограничениями на количество стикеров в зависимости от типа набора.
- replaceStickerInSet - Метод заменяет существующий стикер в наборе стикеров на новый.
- File - Объект, представляющий файл, доступный для скачивания через Telegram Bot API, с информацией о его идентификаторах, размере и пути.
- InputFile - Объект, представляющий содержимое файла для загрузки через multipart/form-data.