Самописный бот для закрытого клуба FinX
Написал Telegram-бота на Python, без конструктора. Он связывает оплату и партнёрские программы с доступом в клуб. В одном меню — оплата картой, криптовалютой, проверка аккаунта Bitunix и доступ после покупки у Hash Hedge.
Задача
Для FinX Crypto Hub требовался бот с несколькими способами вступления. Нужно было связать оплату или выполнение партнёрских условий с конкретным Telegram-аккаунтом, выдать ссылку в закрытое сообщество и учитывать срок доступа.
Моя работа
Написал бота на Python, подключил API и уведомления от сервисов, добавил хранение оплат и сроков в SQLite. Реализовал выдачу приглашений, проверку окончания доступа и обработку повторных событий. Развернул приложение на VPS.
Как выглядит бот
Главное меню
Участник выбирает способ получения доступа. Здесь же — переход к обучению и связь с отделом заботы.
Счёт на оплату
Бот сообщает сумму и даёт ссылку на платёжную страницу. На скриншоте — созданный счёт, до подтверждения оплаты.
Покупка у партнёра
Для Hash Hedge участник выбирает свой регион и переходит по соответствующей персональной ссылке.
Как можно получить доступ
GetCourse
Оплата картой
Бот формирует ссылку на оплату с Telegram ID участника. При создании заказа может отправить ссылку на его оплату прямо в переписку.
Когда GetCourse передаёт подтверждение оплаты, бот находит нужного участника и оформляет период доступа на 30 дней.
NOWPayments
Оплата криптовалютой
Бот создаёт отдельный счёт и сохраняет, кому он принадлежит. Участник переходит на платёжную страницу сервиса.
Доступ выдаётся после окончательного подтверждения платежа. До этого бот проверяет подпись уведомления, заказ и сумму.
Bitunix Partner API
Проверка аккаунта на бирже
Участник регистрируется по партнёрской ссылке FinX и отправляет UID — номер аккаунта на бирже. Бот проверяет, что аккаунт относится к прямым рефералам FinX, и запрашивает текущий баланс.
По условиям проекта баланс от 200 USDT даёт 30 дней доступа. Для нового периода проверка проводится повторно.
Hash Hedge
Покупка у партнёра
Бот выдаёт персональные ссылки для России и СНГ или других стран. В ссылке передаётся Telegram ID участника.
Обработчик принимает уведомление о покупке, проверяет принадлежность к FinX и оформляет 30 дней доступа. Одна регистрация права на вход не даёт.
Меньше процессов в GetCourse
Для клуба в GetCourse настроены три процесса по заказам: создание, оплата и отмена. Проверку права на вход и сроков доступа вынес в самописного бота — для них не понадобились отдельные процессы с таймерами и повторяющимися условиями в GetCourse.
Бот хранит сроки в своей базе, учитывает оплату и партнёрские способы входа, выдаёт приглашения и закрывает доступ, когда закончились все действующие периоды. Эти правила собраны в коде и не дублируются в процессах GetCourse.
Как бот управляет доступом
Выдаёт ссылку для вступления
После подтверждения бот сохраняет срок и отправляет приглашение, рассчитанное на одно вступление. Если человек уже в клубе, повторно приглашать его не нужно.
Учитывает все способы входа
Оплата и партнёрская проверка сохраняются отдельно. Если один период закончился, но другой ещё действует, участник остаётся в клубе.
Закрывает истёкший доступ
Фоновая проверка удаляет обычного участника, когда закончились все его периоды. После новой оплаты или проверки он может вступить снова. Владельца и администраторов бот не удаляет.
Не обрабатывает одну оплату дважды
Сервисы могут повторно прислать уведомление. Бот сверяет идентификатор заказа или события: повтор не создаёт ещё один период и не отправляет подтверждение заново.
Что учёл при разработке
В Bitunix проверяется текущий баланс, а не сумма прошлых пополнений или торговый объём. Если баланс снизился после успешной проверки, уже выданный период сохраняется до своей даты окончания; следующая проверка может не дать новый доступ.
Перед созданием криптовалютного счёта бот проверяет свои права в сообществе. Если не может пригласить участника и управлять доступом, счёт не создаётся.
Результат разработки
Собрал в одном боте четыре способа получения доступа и общий учёт сроков. Для каждого события сохраняются участник, источник и период; выдача приглашений и удаление по окончании срока выполняются фоновым обработчиком.
Проверил в автоматических тестах успешные подтверждения, повторы, неверные данные, выдачу приглашений и окончание доступа. Основа проекта — Python, SQLite, Telegram Bot API и собственные интеграции с GetCourse, NOWPayments, Bitunix и Hash Hedge.