Телеграм-бот з платним доступом (Stripe + автоматична підписка)
Проект: Telegram-бот з платним доступом (Stripe + автоматична видача доступу)
Короткий опис проекту
Потрібен розробник для завершення та стабілізації проекту Telegram-бота з платним доступом до закритого каналу/групи.
Основне завдання системи — автоматизувати продаж доступу до Telegram-спільноти:
користувач обирає тариф у боті
оплачує через Stripe
отримує доступ до закритого каналу
по закінченню підписки автоматично видаляється
Проект вже частково реалізований.
Частина функціоналу була розроблена з використанням ChatGPT та Cursor, тому кодова база вже існує. Однак архітектура вийшла неоднорідною, і в ряді місць система працює нестабільно.
На даний момент:
деякі функції працюють
деякі частини потребують виправлення
архітектуру необхідно привести до стабільного production-вигляду
Основне завдання розробника — привести проект у робочий стан і завершити систему.
Мета проекту
Створити стабільну систему платних Telegram-підписок, яка:
приймає платежі через Stripe
автоматично видає доступ до Telegram-каналу
автоматично видаляє користувачів після закінчення підписки
коректно обробляє повернення та chargeback
стійко працює при перезапусках сервера
Основний користувацький сценарій
Користувач відкриває Telegram-бота
Натискає Start
Бачить тарифи
Натискає Купити
Бот відкриває Stripe Checkout
Користувач оплачує
Stripe надсилає webhook
Система активує підписку
Користувач отримує invite-link до закритого каналу
Після закінчення терміну доступу користувач автоматично видаляється з каналу.
Поточний стан проекту
Проект вже містить:
базовий Telegram-бот
інтеграцію зі Stripe Checkout
серверну інфраструктуру
частково реалізовану логіку підписок
Однак:
архітектура місцями не структурована
обробка Stripe webhook реалізована не повністю
автоматична видача/видалення доступу працює нестабільно
потрібна реорганізація коду та стабілізація логіки
Завдання розробника — проаналізувати поточний код і довести систему до стабільного стану.
Вимагана архітектура
Система повинна складатися з наступних компонентів.
1. Telegram Bot
Функції:
відображення меню
вибір тарифів
створення Stripe Checkout
перевірка статусу підписки
надсилання invite-link
Бот виконує лише функції інтерфейсу і не повинен містити складну платіжну логіку.
2. Stripe Checkout
Використовується для прийому оплат.
Плановані тарифи:
7 днів
1 місяць
3 місяці
Підтримка:
одноразові платежі
за необхідності — підписки (subscription)
3. Webhook сервіс
Окремий endpoint для обробки подій Stripe.
Функції:
прийом webhook подій Stripe
перевірка підпису Stripe
запис інформації про платежі в базу даних
Основні події:
checkout.session.completed
invoice.paid
charge.refunded
charge.dispute.created
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 Bot API
Stripe API
PostgreSQL / Supabase
Webhook endpoint
systemd / Docker (за бажанням)
Функції Telegram-бота
Основні команди:
/start — запуск бота
/status — перевірка статусу підписки
/buy — вибір тарифів
Меню кнопок:
7 днів
1 місяць
3 місяці
Перевірити статус
Вимоги до безпеки
Обов'язково:
перевірка Stripe webhook signature
захист від повторної обробки подій
використання environment variables для ключів
обробка помилок Telegram API
Результат роботи
Розробник повинен надати:
повністю робочий Telegram-бот
webhook сервіс для Stripe
worker для управління доступом
налаштовану базу даних
інструкції по запуску та деплою
Очікуваний результат
Після завершення роботи система повинна повністю автоматизувати процес:
користувач оплачує доступ
автоматично отримує доступ до Telegram-каналу
по закінченню підписки автоматично видаляється
адміністратор не виконує жодних ручних дій.
-
Доброго дня.
Я займаюся розробкою Telegram-ботів більше 3 років. Основний стек — Python (aiogram v3.x), PostgreSQL та інтеграції з платіжними системами, включаючи Stripe.
Я вже реалізовував ботів з подібною архітектурою:
— Telegram бот з підписками
— Stripe Checkout + Webhooks
— автоматична активація доступу
— видача інвайтів у приватні канали
… — зберігання підписок і платежів у PostgreSQL
По архітектурі пропоную реалізувати систему наступним чином:
• Telegram бот (aiogram v3) — користувацький інтерфейс
• Stripe Checkout — створення платіжної сторінки
• Webhook сервіс — обробка подій Stripe
• PostgreSQL — зберігання користувачів, підписок і платежів
• Nginx + HTTPS — безпечна обробка webhook
Після оплати Stripe надсилає webhook, який:
1. перевіряє підпис Stripe
2. перевіряє, що подія ще не була оброблена (захист від повторної обробки)
3. активує або продовжує підписку користувача
4. зберігає інформацію про платіж у базі даних
Після цього користувач може отримати запрошення в закритий Telegram-канал через бота.
Для захисту від передачі доступу іншим людям можна використовувати механізм одноразових або обмежених invite-links, які:
— генеруються ботом через Telegram API
— мають обмеження по кількості використань
— можуть мати час життя
— видаються тільки користувачам з активною підпискою
Перед видачею посилання бот перевіряє:
• наявність активної підписки
• дату закінчення доступу
• статус користувача
Також можна реалізувати:
— розділ "Мій доступ" для перевірки статусу підписки
— логування платежів і дій користувачів
— адмін-команди для перевірки користувача і ручної видачі доступу
Архітектура буде зроблена так, щоб:
• систему можна було легко перенести на інший сервер
• можна було додавати нові канали і тарифи
• бот стабільно працював при великій кількості користувачів
Готовий обговорити деталі проекту і запропонувати оптимальну архітектуру.
Дякую.
-
1328 35 1 Доброго дня. Є подібне рішення, але на PHP. Простішим є встановити та налаштувати те, що вже працює. Звертайтеся.
-
4975 41 4 1 Доброго дня!
Професійно розробляю ботів Telegram та веб-додатки на Python. Маю значний досвід роботи з Telegram Bot API, інтеграцією Stripe (Checkout, Webhooks) та PostgreSQL/Supabase. Готовий доопрацювати, стабілізувати архітектуру та розгорнути ваш проект підписки.
Напишіть мені в лс, уточнимо деталі.
-
564 1 0 Доброго дня, можемо виконати ваше завдання, робили подібних ботів з оплатою та доступом під бд.
-
196 Ознайомився з ТЗ. Маю досвід розробки Telegram-ботів та інтеграції Stripe. Можу проаналізувати поточний код, привести архітектуру до стабільного стану і доробити систему з автоматичною видачею та видаленням доступу до каналу. Готовий обговорити деталі та почати роботу.
-
4611 52 1 Доброго дня.
Я Python-розробник і можу допомогти завершити та стабілізувати ваш проект Telegram-бота з платним доступом через Stripe.
Судячи з опису, основне завдання — привести поточну кодову базу до стабільної production-архітектури, виправити обробку Stripe webhook і забезпечити надійну автоматичну видачу та відкликання доступу до Telegram-каналу.
Як я пропоную організувати рішення:
Стек:
… • Python
• aiogram для Telegram-бота
• FastAPI для webhook сервісу Stripe
• PostgreSQL / Supabase для зберігання користувачів, підписок і платежів
• Stripe API + перевірка підпису webhook
• окремий worker для управління доступом
• systemd або Docker для стабільного запуску сервісів
Архітектура буде розділена на незалежні компоненти:
1. Telegram Bot
Відповідає тільки за користувацький інтерфейс:
• меню
• вибір тарифів
• створення Stripe Checkout Session
• перевірка статусу підписки
2. Stripe Webhook Service
Окремий endpoint, який:
• приймає події Stripe
• перевіряє підпис webhook
• записує платежі в базу даних
• оновлює статус підписки
3. Access Worker
Фоновий сервіс, який:
• видає invite-links користувачам з активною підпискою
• видаляє користувачів після закінчення доступу
• обробляє повернення та chargeback
• безпечно працює при повторних запусках
Також буде реалізовано:
• захист від повторної обробки webhook подій
• стійкість до перезапуску сервера
• коректна обробка помилок Telegram API
• логування роботи системи
Я також зможу проаналізувати існуючий код, провести рефакторинг архітектури і довести систему до стабільного стану для роботи 24/7.
Після завершення ви отримаєте:
• повністю робочий Telegram-бот
• стабільно працюючий Stripe webhook сервіс
• worker для управління доступом
• налаштовану базу даних
• інструкції по деплою та запуску на VPS
Буду радий подивитися поточну кодову базу і обговорити деталі проекту.
-
1545 9 0 Вітаю! Зацікавив ваш проєкт. Маю великий досвід розробки Telegram-ботів на Python (aiogram), роботи з PostgreSQL та налаштування серверів, тому ваше ТЗ мені абсолютно зрозуміле і збігається з моїм стеком.
Як я реалізую ключові вимоги:
Stripe та Webhooks: Налаштую інтеграцію зі Stripe Checkout. Обов'язково реалізую перевірку підпису вебхуків (signature verification) та ідемпотентність (через таблицю processed_events), щоб повністю виключити подвійну обробку платежів.
Управління доступом: Для захисту від передачі запрошень третім особам, бот генеруватиме унікальні одноразові інвайт-посилання. Також реалізую фоновий процес, який щодня перевірятиме expires_at і автоматично видалятиме користувачів, у яких закінчилася підписка.
База даних: Спроєктую реляційну базу на PostgreSQL рівно за вашою структурою (users, subscriptions, payments, events).
Деплой (VPS) та Надійність: Налаштую ваш сервер "під ключ" — підніму Nginx як reverse proxy, прив'яжу SSL-сертифікат для безпечної роботи вебхуків та створю systemd-сервіс для безперебійної роботи бота 24/7 (з автоматичним рестартом у разі збоїв).
Адмін-панель: Додам необхідні команди для перевірки статусів юзерів та ручної видачі/скасування доступу.
Архітектура коду буде модульною, що дозволить вам легко масштабувати проєкт (додавати нові канали чи тарифи) в майбутньому.
… Готовий детальніше обговорити проєкт і стати до роботи. Пишіть у приватні повідомлення!