Описание
Используйте этот метод для создания нового набора стикеров, принадлежащего пользователю. Бот сможет редактировать созданный таким образом набор стикеров. Возвращает True при успешном выполнении.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| user_id | Integer | Да | Идентификатор пользователя, владельца создаваемого набора стикеров |
| name | String | Да | Короткое имя набора стикеров, используемое в URL t.me/addstickers/ (например, animals). Может содержать только английские буквы, цифры и подчеркивания. Должно начинаться с буквы, не может содержать последовательных подчеркиваний и должно заканчиваться на "_by_<bot_username>". <bot_username> не чувствителен к регистру. 1-64 символа. |
| title | String | Да | Название набора стикеров, 1-64 символа |
| stickers | Array of InputSticker | Да | Список из 1-50 начальных стикеров в формате JSON для добавления в набор стикеров |
| sticker_type | String | Опционально | Тип стикеров в наборе, укажите "regular", "mask" или "custom_emoji". По умолчанию создается обычный набор стикеров. |
| needs_repainting | Boolean | Опционально | Укажите True, если стикеры в наборе должны перекрашиваться в цвет текста при использовании в сообщениях, в акцентный цвет при использовании как статус-эмодзи, в белый на фотографиях чатов или в другой подходящий цвет в зависимости от контекста; только для наборов кастомных эмодзи-стикеров |
Примеры
php
<?php
// Токен вашего бота
$botToken = 'ВАШ_ТОКЕН_БОТА';
// ID пользователя, который будет владельцем стикерпака
$userId = 123456789;
// Имя стикерпака (должно заканчиваться на _by_<имя_бота>)
$stickerSetName = 'my_cool_stickers_by_your_bot';
// Название стикерпака
$stickerSetTitle = 'My Cool Stickers';
// Подготовка стикеров
$stickers = [
[
'sticker' => new CURLFile('path/to/sticker1.webp'), // Путь к файлу стикера
'emoji_list' => ['😀'], // Список эмодзи для стикера
'format' => 'static' // Формат: static, animated, video
],
[
'sticker' => new CURLFile('path/to/sticker2.webp'),
'emoji_list' => ['🐱'],
'format' => 'static'
]
];
// Опциональные параметры
$stickerType = 'regular'; // regular, mask, custom_emoji
$needsRepainting = false; // Только для custom_emoji
// Формируем данные для запроса
$postData = [
'user_id' => $userId,
'name' => $stickerSetName,
'title' => $stickerSetTitle,
'sticker_type' => $stickerType,
'needs_repainting' => $needsRepainting
];
// Добавляем стикеры в данные
foreach ($stickers as $index => $sticker) {
$postData['stickers'] = json_encode([
[
'sticker' => 'attach://sticker_' . $index,
'emoji_list' => $sticker['emoji_list'],
'format' => $sticker['format']
]
]);
// Добавляем файл стикера
$postData['sticker_' . $index] = $sticker['sticker'];
}
// URL API Telegram
$apiUrl = "https://api.telegram.org/bot{$botToken}/createNewStickerSet";
// Инициализируем cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
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 (curl_errno($ch)) {
echo 'cURL Error: ' . curl_error($ch);
} else {
$responseData = json_decode($response, true);
if ($responseData['ok']) {
echo 'Стикерпак успешно создан!';
echo 'Ссылка: t.me/addstickers/' . $stickerSetName;
} else {
echo 'Ошибка: ' . $responseData['description'];
}
}
// Закрываем соединение
curl_close($ch);
// Альтернативный вариант с использованием библиотеки (например, TelegramBotPHP)
/*
use TelegramBot\Api\BotApi;
$bot = new BotApi($botToken);
try {
$result = $bot->createNewStickerSet(
$userId,
$stickerSetName,
$stickerSetTitle,
$stickers,
$stickerType,
$needsRepainting
);
if ($result) {
echo 'Стикерпак успешно создан!';
}
} catch (\Exception $e) {
echo 'Ошибка: ' . $e->getMessage();
}
*/
?>
python
import asyncio
from telegram import Bot, InputSticker
from telegram.constants import StickerFormat
async def create_sticker_set():
bot = Bot(token="YOUR_BOT_TOKEN")
# Создаем стикеры
stickers = [
InputSticker(
sticker=open("sticker1.webp", "rb"), # Файл стикера
emoji_list=["😊"], # Список эмодзи
format=StickerFormat.WEBP # Формат стикера
),
InputSticker(
sticker=open("sticker2.webp", "rb"),
emoji_list=["🐱"],
format=StickerFormat.WEBP
)
]
try:
result = await bot.create_new_sticker_set(
user_id=123456789, # ID пользователя-владельца
name="my_cool_stickers_by_yourbot", # Имя набора
title="My Cool Stickers", # Заголовок набора
stickers=stickers, # Список стикеров
sticker_type="regular" # Тип стикеров (опционально)
)
print(f"Sticker set created successfully: {result}")
except Exception as e:
print(f"Error creating sticker set: {e}")
finally:
# Закрываем файлы
for sticker in stickers:
sticker.sticker.close()
# Запуск асинхронной функции
asyncio.run(create_sticker_set())
История изменений
- API 3.2. Добавлен метод createNewStickerSet
- API 4.7. Обновлен метод createNewStickerSet: Добавлена возможность создавать анимированные стикерпаки с параметром tgs_sticker
- API 5.7. Обновлен метод createNewStickerSet: Добавлен параметр webm_sticker
- API 6.2. Обновлен метод createNewStickerSet: Добавлен параметр sticker_type, параметр contains_masks помечен как устаревший
- API 6.6. Обновлен метод createNewStickerSet: Добавлена поддержка создания наборов стикеров с несколькими стикерами и параметр needs_repainting
- API 7.2. Обновлен метод createNewStickerSet: Удален параметр sticker_format
Дополнительно
- InputSticker - Объект, описывающий стикер для добавления в набор стикеров, включая его файл, формат, связанные эмодзи и дополнительные параметры.