Стикер-бот в Telegram бывает двух видов, и собираются они совершенно по-разному. Первый вид: официальный бот @Stickers, через который свой набор загружается руками минут за десять. Второй: ваш собственный бот, который принимает фото от пользователя, вырезает фон нейросетью и сам собирает набор через Bot API. Ниже разобраны оба, с требованиями Telegram к картинкам, конкретными методами API и планом сборки вместе с ИИ-ассистентом.
Под стикер-ботом понимают одно из двух
Разница принципиальная, потому что во втором случае вы пишете программу, а в первом просто пользуетесь готовой.
- Официальный
@Stickers: набор создаёте вы сами, картинки готовите заранее, бот только принимает файлы и публикует пак. Кода ноль. - Свой бот: пользователь присылает ему фото, а всю рутину (вырезать фон, привести к нужному размеру, собрать набор) делает программа. Кода немного, но он нужен.
- Промежуточный вариант: сторонние боты-конструкторы, которые собирают стикеры из ваших картинок. Удобно разово, но пак остаётся привязан к чужому сервису.
Если стикеры нужны один раз и для себя, а бот вам не интересен, проще пойти другой дорогой: мы отдельно разбирали, как собрать стикеры вообще без бота, через редактор и генерацию картинок. Здесь речь именно про ботов.
Набор через @Stickers: порядок действий
Telegram предлагает управлять паками через мини-приложение @Stickers или через текстовые команды тому же боту, как описано в официальной документации. Команды остаются самым предсказуемым способом.
- Откройте в Telegram бота
@Stickersи отправьте команду/newpack. - Напишите название набора: это то, что увидят люди в списке стикеров.
- Отправьте первую картинку файлом, без сжатия. Если отправить её обычным фото, Telegram пережмёт изображение и потеряет прозрачность, бот такой файл не примет.
- Пришлите эмодзи, которое будет соответствовать этому стикеру. Эмодзи нужно каждому стикеру, это обязательная часть.
- Повторите два предыдущих шага для остальных картинок.
- Отправьте
/publish, при желании загрузите иконку набора и придумайте короткий адрес латиницей. - Получите ссылку вида
t.me/addstickers/имя_набора: по ней набор ставит себе кто угодно.
Дальше набор редактируется теми же командами: /addsticker добавляет картинку в существующий пак, /delsticker убирает лишнюю, /setpackicon меняет иконку. Удалять и пересоздавать пак ради одной правки не нужно.
Бот, который делает стикеры за человека, собирается тем же способом, что и любой другой рабочий проект. На бесплатном вебинаре показываем этот способ на практике.
Занять местоТребования Telegram к файлам стикеров
Эти цифры одинаковы и для ручной загрузки, и для бота, который делает стикеры сам. Все они описаны на странице Telegram про стикеры.
- Статичный стикер: формат
.pngили.webp, одна сторона ровно 512 пикселей, вторая не больше 512. Фон прозрачный, иначе стикер будет выглядеть наклейкой на белом квадрате. - Анимированный стикер: формат
.tgs(это Lottie-анимация), холст 512x512, до 3 секунд, ровно 60 кадров в секунду, вес после рендера до 64 КБ. - Видеостикер: формат
.webmс кодеком VP9, одна сторона 512 пикселей, до 3 секунд, до 30 кадров в секунду, без звуковой дорожки, вес до 256 КБ. - Кастомные эмодзи делаются той же техникой, но холст у них 100x100 пикселей, а для использования своих наборов эмодзи нужен Telegram Premium.
- В обычный набор помещается до 120 стикеров, в набор кастомных эмодзи до 200, по документации Bot API.
Самая частая причина отказа: картинка не квадратная и ни одна её сторона не равна 512 пикселям. Для статичных стикеров Telegram проверяет это строго и отвечает ошибкой STICKER_PNG_DIMENSIONS.
По теме: Нейросеть в телеграм-боте 2026: как подключить и сколько стоит
Свой бот: из чего он состоит
Бот, который делает стикеры за пользователя, это конвейер из пяти простых шагов. Каждый шаг решается одной библиотекой, ничего сложного внутри нет.
- Приём фото. Бот ловит сообщение с изображением, берёт версию максимального размера и скачивает файл к себе.
- Удаление фона. Картинка уходит в нейросеть-сегментатор, обратно приходит PNG с прозрачностью вокруг объекта.
- Подгонка размера. Изображение масштабируется так, чтобы большая сторона стала ровно 512 пикселей, и сохраняется в
.webp. - Загрузка в Telegram. Готовый файл отправляется методом
uploadStickerFile, в ответ приходитfile_id. - Сборка набора. Если у пользователя пака ещё нет, бот вызывает
createNewStickerSet, если есть, тоaddStickerToSet, и отдаёт ссылку на набор.
Отдельно нужно хранить связку «пользователь, имя его набора». Достаточно одной таблицы в SQLite: по ней бот понимает, создавать новый пак или дополнять существующий.
Токен для бота выдаёт @BotFather, порядок первой регистрации мы подробно расписывали в статье про то, как создать бота в Telegram. Если бот планируется не только для вас, сразу добавьте кнопки под сообщениями: как боту сделать кнопки мы разбирали отдельно, они здорово упрощают выбор эмодзи и подтверждение.
Рабочий бот отличается от учебного примера тем, что им кто-то пользуется каждый день. На бесплатном вебинаре по вайбкодингу разбираем, как довести своего бота до этого состояния, и отдаём гайд в подарок.
Записаться на вебинарМетоды Bot API для стикеров
Все методы работают от имени бота, но набор принадлежит пользователю: именно его user_id указывается при создании. Актуальная версия Bot API на конец июля 2026 года: 10.2 от 14 июля, список изменений ведётся на сайте Telegram.
uploadStickerFile: параметрыuser_id,stickerиsticker_format(static,animatedилиvideo). Возвращает объект файла, чейfile_idможно переиспользовать в других наборах.createNewStickerSet:user_id,name,titleи массивstickersиз 1-50 объектовInputSticker. Есть необязательныйsticker_typeсо значениямиregular,maskилиcustom_emoji.addStickerToSet:user_id,nameнабора и один объектsticker. Если такой же файл в наборе уже есть, метод вернёт успех и просто ничего не изменит.InputSticker: поляsticker(файл илиfile_id),format,emoji_list(от 1 до 20 эмодзи) и необязательныеkeywordsдля поиска.setStickerSetThumbnailиdeleteStickerFromSetпригодятся позже: иконка набора и удаление отдельной картинки.
Важная деталь про имя набора: поле name может содержать только латинские буквы, цифры и подчёркивания, начинаться с буквы и обязано заканчиваться на _by_<имя_бота>. Без этого суффикса Telegram вернёт ошибку, и на этом спотыкается почти каждый первый бот.
from aiogram.types import InputSticker, BufferedInputFile
file = BufferedInputFile(webp_bytes, filename="sticker.webp")
sticker = InputSticker(sticker=file, format="static", emoji_list=["🔥"])
await bot.create_new_sticker_set(
user_id=user_id,
name=f"pack{user_id}_by_{bot_username}",
title="Мои стикеры",
stickers=[sticker],
)
По теме: Как создать команду боту в Telegram в 2026: меню и обработчик
Где брать удаление фона
Это единственное место, где нужна нейросеть. Проверенный вариант для своего бота: библиотека rembg, она ставится через pip, работает локально на моделях сегментации семейства U-2-Net и не отправляет фотографии наружу, исходники лежат на GitHub. Для домашнего бота этого достаточно.
rembg: бесплатно, локально, без ключей и оплаты. Первый запуск скачивает модель, дальше работает быстро.- Облачные сервисы удаления фона: качество на сложных волосах и мехе обычно выше, но это внешний API, подписка и оплата картой, что из России решается отдельно.
- Ручной вариант: пользователь сам присылает PNG с прозрачностью. Годится как запасной путь, когда автоматика ошиблась.
pip install aiogram rembg pillow
from rembg import remove
from PIL import Image
import io
cut = remove(photo_bytes) # PNG с прозрачным фоном
img = Image.open(io.BytesIO(cut))
w, h = img.size
k = 512 / max(w, h) # большая сторона станет 512
img = img.resize((max(1, round(w * k)), max(1, round(h * k))))
buf = io.BytesIO()
img.save(buf, format="WEBP")
webp_bytes = buf.getvalue()
Как собрать такого бота с ИИ-ассистентом
Писать это руками не обязательно. Задача хорошо ложится на разговор с ИИ-ассистентом, если давать ему не «сделай стикер-бота», а конкретные требования и по одному шагу за раз.
- Опишите задачу целиком: бот на Python и aiogram 3, принимает фото, удаляет фон через
rembg, приводит картинку к 512 пикселям по большей стороне, сохраняет в.webp. - Отдельным пунктом попросите работу с наборами:
uploadStickerFile, потомcreateNewStickerSetпри первом стикере пользователя иaddStickerToSetпри последующих, имя набора с суффиксом_by_<имя_бота>. - Попросите хранить соответствие «пользователь, имя набора» в SQLite и обрабатывать ошибки API текстом для человека, а не трассировкой.
- Запустите бота у себя, отправьте ему три разные фотографии и посмотрите, где он споткнулся.
- Возвращайтесь к ассистенту с точным текстом ошибки: так правки получаются за одну итерацию, а не за десять.
Начинайте с одного стикера. Бот, который умеет принять одно фото и вернуть один рабочий стикер, уже содержит весь сложный код. Наборы, кнопки и очередь дорисовываются поверх за вечер.
Пока бот запущен у вас на компьютере, он живёт ровно до закрытия терминала. Чтобы им пользовались другие люди, его нужно перенести на сервер: варианты и цены собраны в разборе, как сделать, чтобы бот работал круглосуточно.
По теме: Как сделать бота приватным в Telegram: доступ только своим 2026
Что ломается чаще всего
- Картинка отправлена фотографией, а не файлом: прозрачность пропала, фон стал белым.
- Ни одна сторона не равна 512 пикселям: Telegram отвечает ошибкой размеров и стикер не принимает.
- Имя набора без суффикса
_by_<имя_бота>или с двумя подчёркиваниями подряд: набор не создаётся. - У стикера не указан ни один эмодзи: поле
emoji_listобязательное, пустым его оставлять нельзя. - Набор упёрся в 120 стикеров: нужен новый пак, а бот должен уметь его завести и сказать об этом пользователю.
- Бот пытается редактировать чужой набор: методы работают только с теми паками, которые создал он сам.
Частые вопросы
Можно ли сделать стикер-бот без программирования?
Бота, который сам обрабатывает фото, без кода собрать не получится: конструкторы ботов не умеют вызывать методы работы со стикерами. А вот свой набор стикеров без кода делается за десять минут через @Stickers.
Сколько стоит такой бот?
Сам Bot API бесплатный, rembg тоже. Платить придётся только за место, где бот крутится круглосуточно, и то в пределах стоимости самого простого сервера.
Кому будет принадлежать набор, боту или пользователю?
Пользователю: в createNewStickerSet указывается его user_id. Бот при этом сохраняет право редактировать созданный им набор, поэтому дополнять пак он сможет и потом.
Можно ли делать так видеостикеры и анимации?
Да, у InputSticker есть поле format со значениями static, animated и video. Но подготовка .webm с кодеком VP9 и весом до 256 КБ сложнее, чем статичной картинки, так что начинать логичнее со статики.
Почему бот не видит фото, отправленное документом?
Потому что это разные типы сообщений: обычное фото приходит как photo, файл как document. Рабочий бот обрабатывает оба, иначе половина пользователей будет считать, что он сломан.
Стикер-бот удобно делать первым проектом: результат видно сразу, а внутри тот же набор навыков, что и в любом другом боте или сервисе. На бесплатном вебинаре по вайбкодингу показываем, как собирать такие проекты с ИИ-ассистентом от идеи до запуска.
Записаться на вебинар