Обсудить задачу
кейс · боты · бессерверная инфраструктура работает

Телеграм-бот с платным входом, который не стоит владельцу ни рубля в месяц

коротко

Закрытый телеграм-клуб по вязанию продаёт доступ в канал: человек платит один раз и получает одноразовую пригласительную ссылку. Весь бот живёт на бесплатном тарифе Cloudflare Workers – без сервера, без ежемесячных счетов. Один платный сервис в схеме всё-таки есть, и он бесплатный тоже: функция-ретранслятор в российском облаке, без которой уведомления об оплате просто не доходят.

СЧЁТ ЗА ИНФРАСТРУКТУРУ 0 ₽ в месяц · бот, база, крон и панель бесплатный тариф · без ВПС
рис. 01 / стоимость владенияв проде
ОТРАСЛЬонлайн-клуб
ФОРМАТбот · платный вход
ЗАПУСК2026 · сдан
СТАТУСработает · 0 ₽/мес

Задача

Закрытый телеграм-клуб по вязанию. Вход платный, оплата разовая: заплатил один раз – остался в канале навсегда, никаких подписок и повторных списаний. До автоматизации всё это делалось руками: человек писал, ему называли реквизиты, он присылал скриншот перевода, и только потом получал ссылку.

Задача формулировалась просто: пусть бот принимает оплату и сам выдаёт доступ. Условие владелицы клуба звучало ещё проще – чтобы это ничего не стоило в месяц. Клуб небольшой, платить за сервер ради нескольких обращений в день бессмысленно.

Решение

Бот целиком живёт на бесплатном тарифе Cloudflare Workers. Там же база на D1 – пользователи, платежи, настройки, – и крон, который раз в минуту добивает статусы оплат. Отдельного сервера в схеме нет вообще: телеграм-бот запускается только в момент, когда кто-то ему написал.

Оплата идёт через ЮMoney, доступ выдаётся одноразовой пригласительной ссылкой – её нельзя переслать подруге, она сгорает после первого входа. Владелице клуба досталась панель с заявками и настройками, куда мы не входим: тексты, сумму и надпись на кнопке она меняет сама.

Почему бесплатный бот получился именно на Cloudflare

Первая версия строилась в Яндекс Облаке, и там бесплатным бот быть отказывался. Виноват холодный старт: функция просыпалась двадцать одну секунду, а телеграм столько ждать не станет – вебхук отваливался по таймауту.

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

У Workers холодного старта нет. Вебхук отвечает мгновенно, вызов происходит ровно тогда, когда пришло сообщение, а в промежутках не выполняется ничего. Отсюда и ноль в счёте: создание бота бесплатно возможно не потому, что тариф щедрый, а потому что архитектура не заставляет платить за ожидание.

Ретранслятор: почему без российского адреса деньги не доходят

Здесь была самая дорогая находка проекта, и на ней мы потеряли полдня.

ЮMoney не отправляет уведомления об оплате на зарубежный домен. А Cloudflare – зарубежный. Коварство в том, что проверить это кнопкой нельзя: в кошельке есть тестовая отправка, и она доходит прекрасно. Тестовое уведомление приходит, боевое – нет. Мы успели перебрать подпись, формат формы и тип кнопки, прежде чем поняли, что дело вообще не в них.

Решение – функция-ретранслятор на российском адресе, в Yandex Cloud. Она принимает уведомление от платёжки и передаёт его боту, не меняя тело запроса, поэтому подпись остаётся валидной. Холодный старт, который убил первую версию, здесь не мешает: тот же крон Cloudflare раз в минуту пингует функцию, она отвечает и не засыпает. Денег это не стоит – пинг укладывается в бесплатный лимит.

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

Как это работает

  1. Человек нажимает «Старт» и видит описание клуба и кнопку оплаты.
  2. Бот выставляет счёт в ЮMoney на сумму, заданную владелицей в панели.
  3. После оплаты уведомление идёт в российский ретранслятор, оттуда – боту.
  4. Параллельно крон раз в минуту сам опрашивает статус платежа, а у человека есть кнопка «Я оплатил» – доступ не зависит от того, дошло уведомление или нет.
  5. Бот создаёт одноразовую пригласительную ссылку и отправляет её в личку.
  6. Заявка попадает в панель: когда нажал старт, дошёл ли до оплаты, оплатил ли, вошёл ли в канал.

Что владелица меняет без нас

Панель открывается по тому же адресу, вход по паролю. Внутри две вкладки. В настройках – приветствие, сумма, надпись на кнопке, текст после оплаты, текст напоминания, реквизиты кошелька и идентификатор канала. В заявках – таблица с фильтрами по дню, неделе и месяцу и подсчётом конверсии от старта до входа в канал.

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

Результат

0 ₽
в месяц за всю инфраструктуру
21 сек
холодного старта убрано в ноль
0
серверов в обслуживании

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

Стек

Cloudflare Workers Cloudflare D1 крон раз в минуту Telegram Bot API · вебхук ЮMoney · HMAC-SHA256 Yandex Cloud Function · ретранслятор панель управления

Схема повторяется на любом проекте, где нужен платный доступ в закрытый канал: клуб, курс, сообщество. Меняются тексты и сумма, архитектура остаётся той же.

Грабли, на которые уже наступил

Тестовое уведомление платёжки ничего не доказывает. Разобрано выше и стоило полдня. Проверять только боевым платежом на настоящую сумму.

Бесплатный тариф не равен бесплатной архитектуре. В Яндексе тариф тоже щедрый, но схема с постоянным опросом съедала его за сутки. Считать надо не лимиты, а то, сколько времени код реально выполняется.

Cloudflare периодически недоступен из России. Роскомнадзор время от времени блокирует его подсети. Для бота это не смертельно – телеграм ходит к нему сам, – но означает, что на входящие уведомления от платёжки закладываться нельзя. Поэтому статусы мы опрашиваем сами и добавили кнопку «Я оплатил»: даже если ни одно уведомление не дойдёт, человек получит доступ.

Подпись уведомления считается по новой схеме. Старый способ со склейкой полей отмер весной 2026 года. Сейчас это HMAC-SHA256 в нижнем регистре по отсортированным и URL-кодированным параметрам. Половина инструкций в поиске описывает мёртвую схему – по ним подпись никогда не сойдётся.

Вопросы и ответы

Бот для телеграм бесплатный – так бывает?

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

Создание бота бесплатно – в чём подвох?

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

А если клуб вырастет – придётся платить?

При росте в разы – да, но пороги бесплатных тарифов высокие. Для клуба, где несколько десятков обращений в день, запас многократный. И переезд не потребуется: меняется тариф, а не схема.

Чем это отличается от конструктора ботов?

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

Можно так же сделать бесплатный чат-бот, а не платный вход?

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

Кому принадлежит бот после сдачи?

Владельцу клуба. Аккаунт облака, кошелёк, бот и панель оформлены на него, доступы переданы. Мы не держим ни инфраструктуру, ни деньги и не выступаем посредником в платежах.

автор – Семенов Евгений, Forward Deployed Software Engineer
ещё кейсы

Похожие проекты

все кейсы →
боты · социальный проект

ИИ-юрист: бесплатная правовая помощь в 100+ городах

Два ИИ-юриста круглосуточно объясняют людям их права – бесплатно, без заказчика.

правовая помощь0 ₽24/7
saas · seo-платформа

ExpertRank: витрина экспертов с разметкой E-E-A-T

Портал для экспертов: профили, категории, модерация и полная поисковая обвязка.

экспертыSEO + GEO30 направлений

Похожая задача?

Проходная, склад, зоны допуска, контроль СИЗ – расскажите, как устроен ваш объект: за пару дней скажу честно, что здесь соберётся и из чего.

Обсудить задачу
статьи по теме

Разобрано в блоге

все статьи →
Боты, Автоматизация

Telegram-бот для записи клиентов: полный разбор за вечер

Сценарий, слоты, бронь с гонками, оплата и напоминания – вся механика по узлам.

16 июля
Экономика ИИ, Боты

Сколько стоит свой ИИ-бот: честная смета от идеи до продакшена

Токены, сервер, разработка – раскладываю реальные цифры трёх запущенных ботов.

5 июля
CRM, Автоматизация

ИИ в Битрикс24: пять автоматизаций, которые окупаются сразу

Резюме переписок, автоответы, скоринг, автостадии и дожим – на живых сделках.

8 июля
лента по теме

Новости и посты

вся лента →
пост Почему «умный» бот продаёт хуже простого сценария пост Схема: как агент выбирает инструмент пост Самое недооценённое в голосовом боте – не модель и не голос пост 68% американского малого бизнеса уже с ИИ. Что из этого переносится к нам