Партнёрская программа → Блог → Бот для продажи звёзд
Бот для продажи звёзд Telegram: как собрать своего и где брать товар
Короткий ответ: бот пишется за вечер, весь вопрос в поставке. Официальный Bot API умеет принимать Stars у пользователей, но не умеет их покупать: метода «купи звёзды за деньги» в нём нет. Поэтому магазин звёзд телеграм состоит из двух половин — вашей витрины и чужой закупки. Витрину вы пишете сами, звёзды берёте по API у поставщика, который платит своим кошельком и доставляет их получателю.
Ниже — из чего складывается бот для продажи звёзд, откуда берётся товар, где в этой схеме ваша выручка и что проверить у поставщика до первого заказа.
Искали обратное — куда продать звёзды со своего аккаунта за рубли? Этим занимаются сервисы выкупа, тема другая. Здесь про магазин: как продавать звёзды покупателям.
Что продаёт такой бот и кто у него покупает
Ассортимент простой: продажа Stars пакетами и Telegram Premium на 3, 6 или 12 месяцев. Stars приходят пакетом, Premium — подпиской, и оба товара уходят получателю по username: никаких файлов и кодов активации.
Покупатель идёт к перекупщику по трём причинам, и все три про деньги. На Fragment за звёзды платят в TON — нужен кошелёк и обмен рублей на крипту. Внутри мессенджера оплата картой российского банка работает не у всех. А ему нужно 500 звёзд на подарок сейчас, а не разбираться с кошельками. Ваш магазин принимает привычные ему деньги — карту, СБП, криптовалюту — и отдаёт звёзды за минуты. За эту услугу и платят разницу в цене.
Отдельная категория — владельцы каналов и авторы, которым звёзды телеграм нужны регулярно и партиями. Их удобно вести отдельным прайсом: такие покупки звёзд повторяются сами, без рекламы.
Из чего состоит бот для продажи звёзд: пять блоков
Вопрос «как создать бота по продаже звёзд» распадается на пять кусков, и кода в них немного:
- Витрина. Меню, пакеты, кнопки. На aiogram или telebot — сотня-две строк.
- Касса. Приём денег от покупателя: готовая интеграция ЮKassa, СБП-шлюза или крипто-бота плюс проверка, что платёж прошёл.
- Заказ поставщику. Один HTTP-запрос: тип товара, количество звёзд, username получателя, ключ идемпотентности.
- Статусы. Приём вебхука, показ результата покупателю, журнал заказов — хоть в SQLite.
- Разбор случаев. Опечатка в нике, отказ платежа, недоставка. Не код, а ваши правила — но без них не обойтись.
Закупки звёзд в списке нет: она не ваша забота. Только поэтому бот по продаже звёзд телеграм собирается за вечер, а не за месяц.
Откуда берётся товар: три пути
| Свой кошелёк + Fragment | Сторонняя обёртка | API поставщика | |
|---|---|---|---|
| Что нужно на входе | TON-кошелёк с запасом, своя автоматизация | ключ сервиса, номер телефона и мнемоника кошелька | ключ API, баланс |
| Кто платит за закупку | вы, в TON | вы, со своего кошелька | вы, с баланса в USDT |
| Кто держит кошелёк | вы | сервис получает доступ к вашему | поставщик, своим |
| Что ломается | курс, сбои выдачи, изменения на стороне Fragment | сервис знает вашу сид-фразу | нужен нормальный API — см. ниже |
| Когда стартуете | недели разработки | сразу, с риском | в тот же день |
Про среднюю колонку скажу прямо: она встречается в каждом втором готовом скрипте. Публичные обёртки вокруг Fragment авторизуются так: вы отправляете сервису номер телефона и мнемонику TON-кошелька, он получает токен и платит с вашего кошелька. Сид-фраза и есть кошелёк: кто её знает, тот распоряжается деньгами. Разбор трёх таких сборок по исходникам — отдельно, с цитатами из репозиториев.
Третий путь обходится без кошелька вовсе: вы держите предоплаченный баланс, с него списывается цена заказа, а закупку, доставку и повторы делает поставщик звёзд телеграм.
Наш API как товар для вашего бота
Готового бота мы не даём: пишете сами, как хотите и на чём хотите. Мы даём то, чего вашему магазину негде взять: звёзды телеграм оптом и Premium, по REST API.
Всё общение с API звёзд телеграм — четыре запроса:
GET /api/partner/v1/products → что есть в продаже и по какой цене
POST /api/partner/v1/validate/recipient → существует ли @username, чьё это имя
POST /api/partner/v1/orders → заказ + idempotency_key
GET /api/partner/v1/orders/{id} → статус, если вебхук не дошёл
Сам заказ выглядит так:
POST /api/partner/v1/orders
{
"type": "stars",
"params": { "quantity": 1000, "recipient": "@username" },
"idempotency_key": "shop-order-4821"
}
Что важно магазину, который работает без присмотра ночью:
- Идемпотентность. Тот же
idempotency_key— тот же заказ и ровно одно списание. Мобильная сеть оборвала ответ, код повторил запрос — второго заказа не будет. - Проверка получателя до оплаты.
POST /validate/recipientвозвращает имя из профиля, и покупатель видит, кому уйдёт покупка. Для Premium сообщает, что подписка уже есть, — и заказ с гарантированной ошибкой не создаётся. - Вебхуки с подписью.
order.completed,order.failed,order.refunded, тело подписаноX-Signature: hex(hmac_sha256(body, webhook_secret)). Подделать статус «выполнено» не получится. - Автовозврат. Не удалось доставить — цена возвращается на баланс сама.
- Честный отказ. Не хватает денег на балансе — сразу
402 insufficient_balance, без подвисших заказов. - Лимиты открыто. 120 запросов в минуту на ключ, до 50 000 звёзд в одном заказе, Telegram Premium на 3, 6 и 12 месяцев.
- Пять статусов заказа.
processing,completed,partial,canceled,failed. Обрабатывайте все:partialзначит, что доехала часть заказа, — отдельный сценарий для поддержки.
Ключ pk_live_... выпускается в кабинете и привязывается к вашим IP. Кошельков, номеров телефона и мнемоник мы не спрашиваем. Документация и OpenAPI-спека открыты до подключения: оцените интеграцию заранее, не оплачивая вход.
Где здесь ваша выручка
Схема денег простая. Покупатель платит вашу розничную цену. С баланса списывается наша цена заказа — она приходит в GET /products и не зависит от курса рубля. Разница остаётся у вас.
Из разницы вычтите три статьи расходов, о которых новички забывают:
- комиссию своей кассы — обычно 2–3,5% с оборота, а не с маржи;
- возвраты и споры — передумал, ошибся ником, заплатил дважды;
- поддержку — минуты на заказ, а при сотне заказов в день это уже отдельный человек.
Ориентир розницы снимается с открытых витрин: у нас на tgsuperstars.com тысяча звёзд стоит 1 600 ₽ — 1,60 ₽ за штуку. Дороже рынка продавать можно, если есть за что: мгновенная выдача ночью, платёж в один тап, поддержка в чате.
Главное правило: не считайте сумму заказа своей формулой. Цену фиксирует ответ на создание заказа — к нему и привязывайте списание, иначе при движении курса продадите себе в убыток.
Три места, где такие магазины ломаются в первый месяц
Ник не проверяется. Покупатель пишет @ivan_petrov вместо @ivan_petroff, бот отправляет заказ, звёзды уходят незнакомому человеку. Вернуть нельзя. Лечится запросом validate/recipient до оплаты и подтверждением «отправляем Ивану П.?».
Нет журнала заказов. Клиент говорит «не пришло», а в базе только последний платёж. Храните вместе: идентификатор платежа кассы, idempotency_key, номер заказа поставщика и финальный статус. Спор закрывается за минуту.
Один ключ на тесте и на проде. Тестовый прогон на боевом ключе — реальные списания с баланса. Держите отдельные ключи и ограничьте боевой по IP.
Сколько занимает запуск
Витрина с одним пакетом и полным циклом — вечер, если ботов уже писали. День, если пишете первого. Дальше добавляются пакеты, Premium, реферальные ссылки, админка со статистикой — но продавать можно после первого прогона.
Первый прогон делайте на себе: минимум на баланс, 50 звёзд на свой же аккаунт, вебхук — и смотрите, что увидел покупатель. Стоит это цену одного пакета, а находит все опечатки в логике сразу.
Что проверить у поставщика звёзд телеграм до первого заказа
Коротко, по делу: есть ли ключ идемпотентности у заказа; есть ли проверка получателя; подписываются ли вебхуки; возвращаются ли деньги при недоставке; опубликованы ли лимиты; открыта ли документация до оплаты. Полный чеклист с объяснением, почему каждый пункт кому-то стоил денег, — в статье про Telegram Stars API и выбор поставщика.
Частые вопросы
Нужен ли отдельный бот, или можно продавать на сайте? Можно и на сайте, и в мини-приложении — API один и тот же. Бот короче: интерфейс есть, регистрация покупателю не нужна.
Можно ли принимать оплату самими звёздами? Да, через sendInvoice с валютой XTR — платёж внутри Telegram за цифровой товар. Продавать за звёзды сами звёзды смысла нет — а вот подписку или доступ к контенту так продают часто.
Что если покупатель заплатил, а доставка не удалась? Наша цена возвращается на ваш баланс автоматически, статус приходит вебхуком order.refunded. Деньги покупателю возвращаете вы из своей кассы: его платёж принимали тоже вы.
Сколько нужно денег на старт? Столько, сколько готовы держать в обороте: баланс предоплачен, минимальное пополнение — 100 USDT. Платы за вход и абонплаты нет.
А готовый бот у вас есть? Нет, и осознанно: свой магазин вы настроите под аудиторию лучше любого шаблона. От нас — звёзды, цена и API, всё остальное ваше.
Нужен поставщик под ваш бот или сайт?
Оптовые Telegram Stars и Premium по REST API: до 50 000 звёзд в заказе, доставка по username за минуты, ключ идемпотентности и вебхуки с подписью. Первое пополнение — от 100 USDT.