Подписчик оплатил доступ к закрытому каналу, через месяц карта не прошла повторное списание, а он остался внутри навсегда, потому что администратор канала вручную проверяет оплаты раз в неделю и не заметил отмену. Для канала на тридцать человек это мелкая потеря. Для канала на несколько тысяч подписчиков это дырявая монетизация: часть аудитории получает доступ бесплатно, а выручка падает без видимой причины. Для такой утечки существует понятное решение: бот для платной подписки в Телеграм, который проверяет оплату по графику, а не по памяти администратора.
Такой бот закрывает именно эту рутину. Он выставляет счёт, принимает оплату, выдаёт одноразовую ссылку на канал, следит за датой окончания периода и сам убирает пользователя, если оплата не продлена. Администратору остаётся следить за тарифами и контентом, а не листать таблицу с датами списаний.
Такая схема нужна экспертным каналам с закрытыми материалами, авторам курсов, трейдинг сигналам, закрытым чатам поддержки клиентов. Везде, где доступ к контенту должен существовать ровно столько, сколько за него заплатили.
Как работает бот для платной подписки в Телеграм
Базовая схема строится на трёх частях: приватный канал или группа, бот с правами администратора в этом канале и база данных, где хранятся даты оплаты каждого пользователя. Канал остаётся закрытым: вступить в него напрямую нельзя, только по ссылке, которую выдаёт бот после оплаты.
Пользователь пишет боту в личные сообщения, выбирает тариф, оплачивает счёт. Бот создаёт одноразовую ссылку приглашение методом 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 чек в привычном виде не выдаётся, потому что это внутренняя валюта платформы, а не денежный платёж через кассу. Для бизнеса, которому нужны закрывающие документы на каждую подписку, это стоит уточнить у провайдера до запуска, а не после первых продаж.
Частые ошибки при запуске платного канала
Большинство проблем с платными ботами возникают не из-за кода, а из-за логики, которую не продумали до запуска.
- Не выключена публичная ссылка на канал, и часть аудитории заходит бесплатно, минуя бота.
- unbanChatMember вызывается без only_if_banned и случайно выгоняет активных подписчиков.
- Нет грейс-периода: доступ режется ровно в секунду окончания оплаты, хотя у пользователя могла быть задержка платежа на стороне банка.
- Напоминание о продлении приходит один раз и слишком рано, подписчик забывает к моменту списания.
- Сценарий отмены не протестирован на тестовом канале, и команда узнаёт о проблеме от разозлённых пользователей, а не на этапе разработки.
Частые вопросы
Можно ли принимать оплату 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 и выдать новую ссылку без оплаты. Но это ручное исключение из общей логики бота, которое обычно делает поддержка после обращения пользователя, а не автоматический сценарий. Автоматика всегда привязывает возврат доступа к факту успешной оплаты.
С чего начать
Прежде чем писать код или заказывать бота, стоит пройти четыре шага.
- Определить тарифы: длительность периода, цену, разницу между месячной и годовой подпиской.
- Выбрать способы оплаты для своей аудитории: Stars, карта, СБП или всё сразу.
- Прописать сценарий грейс-периода и условия, при которых бот банит и разбанивает пользователя.
- Протестировать весь цикл на тестовом канале: оплату, продление, отмену и повторную оплату, прежде чем подключать боевую аудиторию.
Если разбираться с Bot API, инвойсами и логикой банов самостоятельно не хочется, под ключ такого бота собирают в студии разработки ботов для Telegram. Если пока не определились, каким ботом закрывать задачу, кроме платной подписки, полезно почитать о том, как выбрать тип и заказать чат-бота для Telegram, а общий обзор применений ботов в бизнесе есть в материале про чат-ботов Telegram для бизнеса. Напоминания о продлении подписки по механике близки к обычной рассылке, и нюансы лимитов разобраны в статье про рассылку в Telegram для бизнеса.









