Проект: Telegram-бот с платным доступом (Stripe + автоматическая выдача доступа)
Краткое описание проекта
Требуется разработчик для завершения и стабилизации проекта Telegram-бота с платным доступом к закрытому каналу/группе.
Основная задача системы — автоматизировать продажу доступа к Telegram-сообществу:
пользователь выбирает тариф в боте
оплачивает через Stripe
получает доступ в закрытый канал
по окончании подписки автоматически удаляется
Проект уже частично реализован.
Часть функционала была разработана с использованием ChatGPT и Cursor, поэтому кодовая база уже существует. Однако архитектура получилась неоднородной, и в ряде мест система работает нестабильно.
На текущий момент:
некоторые функции работают
некоторые части требуют исправления
архитектуру необходимо привести к стабильному production-виду
Основная задача разработчика — привести проект в рабочее состояние и завершить систему.
Цель проекта
Создать стабильную систему платных Telegram-подписок, которая:
принимает платежи через Stripe
автоматически выдает доступ к Telegram-каналу
автоматически удаляет пользователей после окончания подписки
корректно обрабатывает возвраты и chargeback
устойчиво работает при перезапусках сервера
Основной пользовательский сценарий
Пользователь открывает Telegram-бота
Нажимает Start
Видит тарифы
Нажимает Купить
Бот открывает Stripe Checkout
Пользователь оплачивает
Stripe отправляет webhook
Система активирует подписку
Пользователь получает invite-link в закрытый канал
После окончания срока доступа пользователь автоматически удаляется из канала.
Текущее состояние проекта
Проект уже содержит:
Однако:
архитектура местами не структурирована
обработка Stripe webhook реализована не полностью
автоматическая выдача/удаление доступа работает нестабильно
требуется реорганизация кода и стабилизация логики
Задача разработчика — проанализировать текущий код и довести систему до стабильного состояния.
Требуемая архитектура
Система должна состоять из следующих компонентов.
1. Telegram Bot
Функции:
Бот выполняет только функции интерфейса и не должен содержать сложную платежную логику.
2. Stripe Checkout
Используется для приема оплат.
Планируемые тарифы:
Поддержка:
3. Webhook сервис
Отдельный endpoint для обработки событий Stripe.
Функции:
Основные события:
Webhook не должен напрямую выполнять действия в Telegram.
4. База данных
Рекомендуется использовать:
Supabase или PostgreSQL.
Минимальная структура:
users
tg_user_id
created_at
subscriptions
tg_user_id
plan
status
access_until
stripe_customer_id
stripe_subscription_id
created_at
Статусы:
pending
active
expired
canceled
refunded
chargeback
payments
stripe_event_id (unique)
amount
currency
type
created_at
5. Access Worker
Отдельный сервис или скрипт, который запускается периодически.
Функции:
Найти пользователей с активной подпиской
Если доступ не выдан — отправить invite-link
Найти пользователей с истекшим доступом — удалить из Telegram-канала
Обработать возвраты или chargeback — удалить доступ
Worker должен быть безопасным при повторных запусках.
Требования к устойчивости
Система должна корректно работать при:
перезапуске сервера
повторных webhook событиях Stripe
временных ошибках Telegram API
временной недоступности Stripe
Все операции должны быть повторяемыми и не приводить к потере данных.
Развертывание
Предполагается запуск на Linux VPS.
Основные сервисы:
bot.service
worker.service
Scheduler:
cron или systemd timer.
Используемые технологии
Желательно:
Python
или
Node.js
Дополнительно:
Функции Telegram-бота
Основные команды:
/start — запуск бота
/status — проверка статуса подписки
/buy — выбор тарифов
Меню кнопок:
7 дней
1 месяц
3 месяца
Проверить статус
Требования к безопасности
Обязательно:
проверка Stripe webhook signature
защита от повторной обработки событий
использование environment variables для ключей
обработка ошибок Telegram API
Результат работы
Разработчик должен предоставить:
полностью рабочий Telegram-бот
webhook сервис для Stripe
worker для управления доступом
настроенную базу данных
инструкции по запуску и деплою
Ожидаемый результат
После завершения работы система должна полностью автоматизировать процесс:
пользователь оплачивает доступ
автоматически получает доступ к Telegram-каналу
по окончании подписки автоматически удаляется
администратор не выполняет никаких ручных действий.