Проект: Telegram-бот з платним доступом (Stripe + автоматична видача доступу)
Короткий опис проекту
Потрібен розробник для завершення та стабілізації проекту Telegram-бота з платним доступом до закритого каналу/групи.
Основне завдання системи — автоматизувати продаж доступу до Telegram-спільноти:
користувач обирає тариф у боті
оплачує через Stripe
отримує доступ до закритого каналу
по закінченню підписки автоматично видаляється
Проект вже частково реалізований.
Частина функціоналу була розроблена з використанням ChatGPT та Cursor, тому кодова база вже існує. Однак архітектура вийшла неоднорідною, і в ряді місць система працює нестабільно.
На даний момент:
Основне завдання розробника — привести проект у робочий стан і завершити систему.
Мета проекту
Створити стабільну систему платних 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 (унікальний)
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-каналу
по закінченню підписки автоматично видаляється
адміністратор не виконує жодних ручних дій.