Автор платного сообщества в Telegram - закрытый канал и чат по подписке, чуть больше 400 человек.
Учёт вёл руками в Google Таблице: имя, дата оплаты, тариф, когда списывать дальше.
Каждый месяц садился сверять банковскую выписку со строчками таблицы и вручную выкидывать неоплативших, уходило два вечера.
Часть людей сидела бесплатно по три-четыре месяца, их просто не замечали в длинном списке.
Пригласительная ссылка была одна на всех и спокойно гуляла по чужим чатам.
Продление каждый раз превращалось в разговор в личке - напомнить, выставить, дождаться.
Попросил бота, который продаёт доступ, списывает сам и сам чистит канал.
Бот на Python и aiogram 3, расписание на APScheduler, база PostgreSQL, всё в Docker на VPS.
Три тарифа - месяц, полгода, год, цены и описания заказчик правит в админке без меня.
Оплата через ЮKassa с сохранением способа платежа, дальше списания идут рекуррентно, человек в них не участвует.
Пробный период 7 дней: карта привязывается сразу, первое списание уходит на восьмой день.
Промокоды с процентом или фиксированной скидкой, лимитом активаций и сроком жизни.
После оплаты бот сам выдаёт персональную инвайт-ссылку - одна активация, живёт 15 минут, потом сгорает.
Ссылку не открыли за 15 минут - в боте кнопка «получить новую», то-есть человек не идёт писать автору в личку.
Напоминания за 3 дня до списания и утром в день списания, в тексте сумма, тариф и дата.
Карта не прошла - три попытки с суткой между ними, после этого доступ закрывается и бот убирает человека из канала и из чата.
Так-же раз в сутки идёт сверка: состав канала сравнивается со списком активных подписок, лишние вычищаются - в том числе те, кого добавили мимо бота.
Партнёрская программа - у приглашающего своя ссылка, процент с оплат, счётчик начислений и заявка на выплату.
Выгрузка в Excel для бухгалтерии: платежи, возвраты и партнёрские начисления за выбранный период.
Веб-админка на FastAPI и React - подписчики, поиск по человеку, история его платежей, ручная выдача и отзыв доступа.
Ручная сверка ушла совсем, два вечера в месяц освободились.
На первой же прогонке нашлось 37 человек из 412, которые сидели в канале без действующей оплаты.
Продление перестало быть перепиской: около 80% подписчиков продлеваются сами, автор про них просто не вспоминает.
Утечка ссылок закрылась - гулять по чужим чатам стало нечему, ссылка одноразовая и живёт 15 минут.
Исходники, админка и инструкция по тарифам, промокодам и партнёрам остались у заказчика.
Уже после приёмки добавил паузу подписки на месяц - люди уезжали в отпуск и отменяли доступ насовсем, лишь бы не платить впустую.
Скриншоты бота и админки приложены к работе.