Метод createNewStickerSet

Метод создает новый набор стикеров для пользователя, который бот сможет редактировать.

Описание

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