Бот для платной подписки в Телеграм: как настроить

АвтоматизацияМария Соколова10 мин чтения
Бот для платной подписки в Телеграм: как настроить

Подписчик оплатил доступ к закрытому каналу, через месяц карта не прошла повторное списание, а он остался внутри навсегда, потому что администратор канала вручную проверяет оплаты раз в неделю и не заметил отмену. Для канала на тридцать человек это мелкая потеря. Для канала на несколько тысяч подписчиков это дырявая монетизация: часть аудитории получает доступ бесплатно, а выручка падает без видимой причины. Для такой утечки существует понятное решение: бот для платной подписки в Телеграм, который проверяет оплату по графику, а не по памяти администратора.

Такой бот закрывает именно эту рутину. Он выставляет счёт, принимает оплату, выдаёт одноразовую ссылку на канал, следит за датой окончания периода и сам убирает пользователя, если оплата не продлена. Администратору остаётся следить за тарифами и контентом, а не листать таблицу с датами списаний.

Такая схема нужна экспертным каналам с закрытыми материалами, авторам курсов, трейдинг сигналам, закрытым чатам поддержки клиентов. Везде, где доступ к контенту должен существовать ровно столько, сколько за него заплатили.

Как работает бот для платной подписки в Телеграм

Базовая схема строится на трёх частях: приватный канал или группа, бот с правами администратора в этом канале и база данных, где хранятся даты оплаты каждого пользователя. Канал остаётся закрытым: вступить в него напрямую нельзя, только по ссылке, которую выдаёт бот после оплаты.

Пользователь пишет боту в личные сообщения, выбирает тариф, оплачивает счёт. Бот создаёт одноразовую ссылку приглашение методом createChatInviteLink с параметром member_limit, равным единице: по такой ссылке сможет пройти ровно один человек, передать её другому не получится. Лимит для подобных ссылок в Bot API задаётся в диапазоне от 1 до 99999 участников.

Дата окончания периода записывается в базу. Накануне истечения бот отправляет напоминание и предлагает продлить. Если оплата не поступила, доступ отключается автоматически, без участия администратора.

У бота должны быть права администратора в канале, включая право приглашать пользователей по ссылке и право банить участников. Без этих прав createChatInviteLink и banChatMember возвращают ошибку, и автоматика не срабатывает.

Приём оплаты: какие способы доступны

Telegram поддерживает оплату во внутренней валюте Stars прямо через Bot API. Разработчик отправляет счёт методом sendInvoice или создаёт ссылку на оплату через createInvoiceLink, указывая в поле currency значение XTR. Пользователь платит звёздами, которые купил через приложение, и подтверждение проходит внутри Telegram без внешнего эквайринга и без ввода данных карты.

Для рублёвых платежей картой или через СБП Stars не подходят: нужен отдельный платёжный провайдер, подключённый через BotFather, и тот же метод sendInvoice, но с обычной валютой вместо XTR. Это отдельная интеграция с эквайрингом, со своими договорами и чеками по 54-ФЗ, если бизнес работает в России официально.

На практике платные каналы часто комбинируют варианты: Stars для быстрой оплаты внутри Telegram без лишних полей, карта или СБП для тех, кто звёзды не покупал. Разница ещё и в том, куда попадают деньги: звёзды выводятся через Fragment, а платёж через провайдера сразу приходит на расчётный счёт.

Для быстрого старта разумно включить только Stars: интеграция ограничивается методами sendInvoice и обработкой successful_payment, без договора с внешним провайдером и без настройки чеков. Карту и СБП можно подключить позже, когда станет понятно, что аудитория готова платить рублями, а не звёздами.

Автопродление: что на самом деле происходит каждый месяц

Полностью автоматическое списание без участия пользователя работает только там, где платёжный провайдер поддерживает сохранённый способ оплаты и рекуррентные платежи. Для Stars такого нет: пользователь каждый раз подтверждает оплату сам, хотя делает это за два нажатия, без ввода данных карты.

Поэтому большинство ботов для платных подписок устроены как мягкое автопродление: бот напоминает за несколько дней до окончания периода, присылает кнопку оплаты, и если пользователь нажимает её и платит, продлевает доступ на новый период без выдачи новой ссылки, просто сдвигая дату в базе. Если платёжный провайдер поддерживает рекуррентные платежи с сохранённой картой, продление можно сделать без лишних нажатий пользователя, но это зависит от конкретного эквайринга, а не от Telegram.

Разница между этими двумя моделями важна на старте: если обещать клиентам полностью автоматическое списание картой, а подключить только Stars, продления будут срываться, потому что Stars таких списаний не делают.

Количество напоминаний стоит планировать так, чтобы у пользователя было время отреагировать: одно сообщение заранее и ещё одно в день окончания периода работает надёжнее единственного письма за сутки до списания. Текст напоминания стоит делать коротким и с одной кнопкой оплаты, а не блоком условий подписки.

Автобан при отмене подписки

Когда оплаченный период заканчивается и продления нет, бот вызывает метод banChatMember. Это не просто исключение из канала: пользователь попадает в список забаненных и не может вернуться по старым или чужим ссылкам. У метода есть параметр until_date, который задаёт срок бана: значения короче 30 секунд или длиннее 366 дней Telegram трактует как бан навсегда.

Если подписчик оплачивает доступ повторно, бот должен вызвать unbanChatMember, иначе человек уже оплатил, но не может войти: он всё ещё в списке забаненных. После unbanChatMember пользователь не возвращается в канал автоматически, зато получает право снова зайти по новой одноразовой ссылке, которую бот создаёт сразу после успешной оплаты.

Частая ошибка на этом шаге: вызвать unbanChatMember без параметра only_if_banned. Этот флаг появился в Bot API начиная с версии 5.0 именно для того, чтобы метод не трогал пользователей, которые не забанены. Без него случайный вызов может выкинуть из канала действующего подписчика.

Разумный приём: не банить сразу в секунду истечения оплаты, а дать небольшой грейс-период, например несколько часов, прежде чем вызывать banChatMember. Это страхует от задержек на стороне банка или платёжного провайдера и снижает число обращений в поддержку от тех, кто оплатил, но попал под бан по технической задержке.

Инвайт-ссылка вместо прямого добавления в канал

У createChatInviteLink есть второй режим: параметр creates_join_request. Если включить его, каждый переход по ссылке превращается в заявку на вступление, которую нужно подтвердить вручную или через бота методом approveChatJoinRequest. Этот режим и member_limit взаимно исключают друг друга: одновременно задать лимит участников и включить заявки на вступление нельзя.

Для платного канала обычно выбирают первый вариант: одноразовая ссылка с лимитом в один переход, которая выдаётся сразу после оплаты. Пользователь не ждёт подтверждения, доступ открывается через секунды. Режим с заявками на вступление уместен, если кроме оплаты нужна ручная проверка, например модерация анкеты перед закрытым клубом.

  • Разовая ссылка с member_limit равным 1: мгновенный доступ после оплаты, подходит большинству платных каналов.
  • Ссылка с creates_join_request: дополнительный шаг проверки, подходит клубам с отбором участников.
  • Постоянная публичная ссылка в канале: не совместима с платным доступом, её нужно убрать до запуска подписки.

Как выбрать способ оплаты для своей аудитории

Выбор зависит от того, где находится аудитория и привыкла ли она покупать звёзды Telegram. Таблица ниже показывает три рабочих варианта для российского рынка.

Способ оплаты Что нужно подключить Кому подходит
Telegram Stars (XTR) Только сам бот, провайдер не нужен, provider_token передаётся пустой строкой Молодая аудитория, разовые и небольшие платежи, зарубежные подписчики
Банковская карта через провайдера Договор с платёжным провайдером, подключение через BotFather, чеки по 54-ФЗ Основная аудитория из России, крупные тарифы, бизнес-подписки
СБП Подключение через того же платёжного провайдера, если он поддерживает СБП Аудитория, которая не хочет платить картой или покупать Stars

Если аудитория разношёрстная, разумно дать два варианта сразу: Stars как самый быстрый способ внутри Telegram и карту или СБП как запасной для тех, кто звёзды не покупал.

Чеки и закрывающие документы

Если канал монетизируется официально и оплата проходит через платёжного провайдера, чек по 54-ФЗ формирует этот провайдер, а не бот. При оплате звёздами Telegram чек в привычном виде не выдаётся, потому что это внутренняя валюта платформы, а не денежный платёж через кассу. Для бизнеса, которому нужны закрывающие документы на каждую подписку, это стоит уточнить у провайдера до запуска, а не после первых продаж.

Частые ошибки при запуске платного канала

Большинство проблем с платными ботами возникают не из-за кода, а из-за логики, которую не продумали до запуска.

  1. Не выключена публичная ссылка на канал, и часть аудитории заходит бесплатно, минуя бота.
  2. unbanChatMember вызывается без only_if_banned и случайно выгоняет активных подписчиков.
  3. Нет грейс-периода: доступ режется ровно в секунду окончания оплаты, хотя у пользователя могла быть задержка платежа на стороне банка.
  4. Напоминание о продлении приходит один раз и слишком рано, подписчик забывает к моменту списания.
  5. Сценарий отмены не протестирован на тестовом канале, и команда узнаёт о проблеме от разозлённых пользователей, а не на этапе разработки.

Частые вопросы

Можно ли принимать оплату Telegram Stars без подключения банковского эквайринга

Да. Для оплаты в Stars провайдер не нужен: в sendInvoice указывается валюта XTR, а поле provider_token передаётся пустой строкой. Пользователь покупает звёзды через приложение Telegram, оплачивает ими счёт бота, и деньги поступают владельцу бота без внешней платёжной системы и без ввода данных карты.

Что технически происходит с пользователем после отмены подписки

Бот вызывает banChatMember: пользователь теряет доступ к каналу и попадает в список забаненных, то есть не может вернуться по старым ссылкам. При повторной оплате бот вызывает unbanChatMember с флагом only_if_banned и выдаёт новую одноразовую ссылку с лимитом на одного человека, через которую подписчик заходит снова.

Сколько человек может пройти по одной инвайт-ссылке

От 1 до 99999: именно такой диапазон допускает параметр member_limit у метода createChatInviteLink. Для платного канала почти всегда ставят значение 1, чтобы ссылку нельзя было переслать знакомым и получить доступ без оплаты. Для разовой публичной акции лимит можно увеличить. Повышать лимит стоит только для открытых активаций, а не для платного доступа.

Заменяют ли звёзды Telegram обычный эквайринг для рублёвых платежей

Нет. Stars работают только как внутренняя валюта цифровых товаров и услуг внутри Telegram, их нельзя использовать вместо карты или СБП для обычных рублёвых счетов. Если нужен приём оплаты картой или через СБП с чеками по 54-ФЗ, подключают отдельного платёжного провайдера через BotFather, а Stars оставляют как дополнительный способ.

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

Технически да: администратор может вручную вызвать unbanChatMember и выдать новую ссылку без оплаты. Но это ручное исключение из общей логики бота, которое обычно делает поддержка после обращения пользователя, а не автоматический сценарий. Автоматика всегда привязывает возврат доступа к факту успешной оплаты.

С чего начать

Прежде чем писать код или заказывать бота, стоит пройти четыре шага.

  1. Определить тарифы: длительность периода, цену, разницу между месячной и годовой подпиской.
  2. Выбрать способы оплаты для своей аудитории: Stars, карта, СБП или всё сразу.
  3. Прописать сценарий грейс-периода и условия, при которых бот банит и разбанивает пользователя.
  4. Протестировать весь цикл на тестовом канале: оплату, продление, отмену и повторную оплату, прежде чем подключать боевую аудиторию.

Если разбираться с Bot API, инвойсами и логикой банов самостоятельно не хочется, под ключ такого бота собирают в студии разработки ботов для Telegram. Если пока не определились, каким ботом закрывать задачу, кроме платной подписки, полезно почитать о том, как выбрать тип и заказать чат-бота для Telegram, а общий обзор применений ботов в бизнесе есть в материале про чат-ботов Telegram для бизнеса. Напоминания о продлении подписки по механике близки к обычной рассылке, и нюансы лимитов разобраны в статье про рассылку в Telegram для бизнеса.

Поделиться:

About Author: Мария Соколова

nu_editor_sokolova@neurounit.ai

Редактор Neurounit. Пишет про нейросети в маркетинге и работу AI-агентов в рекламе.

Neurounit

Запустить рост с AI

Оставьте заявку или напишите в мессенджер