Telegram-бот / Демопроект
ClubGate
Бот выдаёт и продлевает доступ в закрытое Telegram-сообщество, напоминает об окончании срока и обрабатывает возвраты.

Задача
Владельцу закрытого клуба нужно знать, у кого оплачен доступ и когда он закончится. Если платёжное событие повторилось или Telegram не ответил, бот должен сохранить право участника и проверить итог операции.
Решение
Разовая покупка в Telegram Stars открывает доступ на 30 суток. Бот выдаёт персональное приглашение, проверяет право при вступлении и напоминает об окончании срока. Продление добавляет новый период. Возврат отменяет только период соответствующей покупки.
Как это работает


Результат
В отчёте реализации зафиксированы 88 пройденных тестов. Локальный сценарий подтвердил две тестовые покупки, два периода доступа, один возврат и удаление участника после истечения срока. Telegram в демо имитируется. Работа в реальном сообществе и реальные платежи не проверялись.
Мой вклад
Я разделил платёж, право доступа и фактическое членство. PostgreSQL хранит события и задания, поэтому повторная доставка не начисляет доступ дважды, а после тайм-аута бот сверяет состояние перед следующим действием.
Архитектура
Входящие события, право доступа и внешние действия связаны через PostgreSQL.
Приём событий
Бот или локальный сценарий сохраняет входящие события до обработки.
Связи компонентов
- Приём событий: Бот или локальный сценарий сохраняет входящие события до обработки.
- Платежи и доступ: Бизнес-логика проверяет заказ и фиксирует отдельный период доступа.
- Фоновая обработка: Фоновый процесс выполняет действия через Telegram-адаптер и сверяет неоднозначные результаты.
- Приём событий → Платежи и доступ
- Платежи и доступ → Фоновая обработка