Telegram бот для управления депозитами с ежедневным начислением процентов. Пользователи могут создавать депозиты, получать проценты ежедневно и выводить средства в любое время
# Клонируйте и настройте проект
git clone https://github.com/danlikendy/balancecore_bot_tg_project
cd balancecore_bot_tg_project
# Автоматическая настройка
make setupОтредактируйте файл .env:
# Обязательные настройки
BOT_TOKEN=ваш_токен_бота
ADMIN_USER_ID=ваш_telegram_id
DATABASE_URL=postgresql://balancecore:balancecore_password@localhost:5432/balancecore_bot
SECRET_KEY=ваш-секретный-ключ
# YooKassa настройки
YOOKASSA_SHOP_ID=ваш_shop_id
YOOKASSA_SECRET_KEY=ваш_secret_key
YOOKASSA_TEST_MODE=true
# PayMaster настройки (альтернативная платежная система)
PAYMASTER_MERCHANT_ID=ваш_merchant_id
PAYMASTER_SECRET_KEY=ваш_secret_key
PAYMASTER_API_URL=https://paymaster.ru
PAYMASTER_TEST_MODE=true
# Ozon Pay настройки (платежная система Ozon)
OZON_CLIENT_ID=ваш_client_id
OZON_CLIENT_SECRET=ваш_client_secret
OZON_API_URL=https://api.ozon.ru
OZON_TEST_MODE=true
# Яндекс Пэй настройки (платежная система Яндекс)
YANDEX_PAY_MERCHANT_ID=ваш_merchant_id
YANDEX_PAY_SECRET_KEY=ваш_secret_key
YANDEX_PAY_API_URL=https://pay.yandex.ru/api
YANDEX_PAY_TEST_MODE=true
# Настройки системы
MIN_WITHDRAWAL_AMOUNT=100
ADMIN_PERCENTAGE=5
WITHDRAWAL_DELAY_DAYS=0 # Без задержки для депозитов# Запуск всех сервисов
make docker-up
# Просмотр логов
make docker-logs# Запуск в режиме разработки
make dev
# Или по отдельности
make docker-up postgres redis # Только БД
make migrate # Миграции
uvicorn api.main:app --reload # API
python bot/main.py # Бот- Создание депозитов - пополнение с начислением процентов
- Ежедневные проценты - автоматическое начисление 1% в день
- Просмотр баланса - текущий баланс, депозиты и заработанные проценты
- Вывод средств - вывод в любое время с комиссией администратора
- История операций - полная история всех транзакций
- Веб-панель - управление заявками на вывод
- Статистика - общая статистика по депозитам и выводам
- Автоматизация - ежедневное начисление процентов по расписанию
- Проверка прав - разграничение доступа пользователей и админов
- Валидация данных - проверка всех входящих данных
- Логирование - полное логирование всех операций
- Создание депозита: Пользователь пополняет баланс через ЮKassa
- Ежедневное начисление: Каждый день автоматически начисляется 1% от текущей суммы депозита
- Сложные проценты: Проценты начисляются на проценты (сложные проценты)
- Вывод в любое время: Пользователь может вывести средства в любое время
- Автоматическое закрытие: При выводе депозит автоматически закрывается с начислением всех процентов
- Депозит: 10,000 руб.
- День 1: 10,000 + 1% = 10,100 руб.
- День 2: 10,100 + 1% = 10,201 руб.
- День 3: 10,201 + 1% = 10,303.01 руб.
- И так далее...
- Регистрация: Зарегистрируйтесь на https://yookassa.ru
- Получение данных: Получите Shop ID и Secret Key
- Настройка в .env:
YOOKASSA_SHOP_ID=ваш_shop_id YOOKASSA_SECRET_KEY=ваш_secret_key YOOKASSA_TEST_MODE=true # false для продакшена
- Регистрация: Зарегистрируйтесь на https://pay.yandex.ru
- Получение данных: Получите Merchant ID и Secret Key
- Настройка в .env:
YANDEX_PAY_MERCHANT_ID=ваш_merchant_id YANDEX_PAY_SECRET_KEY=ваш_secret_key YANDEX_PAY_TEST_MODE=true # false для продакшена
- Регистрация: Зарегистрируйтесь на https://paymaster.ru
- Получение данных: Получите Merchant ID и Secret Key
- Настройка в .env:
PAYMASTER_MERCHANT_ID=ваш_merchant_id PAYMASTER_SECRET_KEY=ваш_secret_key PAYMASTER_TEST_MODE=true # false для продакшена
Все интегрированные платежные системы поддерживают СБП:
- YooKassa: СБП доступен автоматически после настройки
- PayMaster: СБП включен через параметр
LMI_PAYMENT_METHOD=ALL - Яндекс Пэй: СБП доступен в списке методов оплаты
- Ozon Pay: СБП поддерживается через API
Для активации СБП:
- Получите учетные данные от платежной системы
- Добавьте их в
.envфайл - Активируйте СБП в личном кабинете платежной системы
- Убедитесь, что вебхуки настроены правильно
Подробная инструкция по настройке интернет-эквайринга и СБП доступна в файле PAYMENT_SETUP.md
Самый простой способ начать принимать платежи без регистрации:
- Зарегистрируйтесь на https://cryptocloud.plus (или другом криптопроцессинге)
- Получите API ключ и Shop ID
- Добавьте в
.env:CRYPTOCLOUD_API_KEY=ваш_api_key CRYPTOCLOUD_SHOP_ID=ваш_shop_id CRYPTOCLOUD_TEST_MODE=false
- Готово! Криптоплатежи работают автоматически
- Укажите реквизиты в
.env:MANUAL_PAYMENT_CARD_NUMBER=номер_карты MANUAL_PAYMENT_PHONE=номер_телефона MANUAL_PAYMENT_WALLET=адрес_кошелька
- Пользователи переводят средства на указанные реквизиты
- Администратор подтверждает платежи вручную через админ-панель
Подробная информация о всех альтернативных способах приема платежей доступна в файле ALTERNATIVE_PAYMENTS.md
Для ежедневного начисления процентов настройте cron:
# Каждый день в 00:01
1 0 * * * cd /path/to/project && python scripts/daily_interest.pyИли используйте Docker:
# Запуск начисления процентов
docker-compose exec bot python scripts/daily_interest.pymake help # Справка по командам
make setup # Первоначальная настройка
make dev # Запуск в режиме разработки
make docker-up # Запуск через Docker
make docker-down # Остановка сервисов
make migrate # Запуск миграций БД
make test # Запуск тестов
make status # Статус сервисов/start- Главное меню/balance- Мой баланс и депозиты/deposit- Создать депозит с процентами/withdraw- Вывести средства/history- История операций/help- Справка
- Мой баланс - показывает баланс, депозиты и заработанные проценты
- Пополнить - создание нового депозита с начислением процентов
- Вывести средства - вывод средств с депозитов и баланса
- История операций - все транзакции и начисления процентов
- API документация: http://localhost:8000/docs
- Админ-панель: http://localhost:8000/admin
- Статус API: http://localhost:8000/health
# Bot Configuration
BOT_TOKEN=ваш_токен_бота
ADMIN_USER_ID=ваш_telegram_id
# Database Configuration
DATABASE_URL=postgresql://user:password@localhost:5432/balancecore_bot
REDIS_URL=redis://localhost:6379/0
# API Configuration
API_HOST=0.0.0.0
API_PORT=8000
SECRET_KEY=ваш-секретный-ключ
# YooKassa Configuration (для приема платежей)
YOOKASSA_SHOP_ID=ваш_shop_id
YOOKASSA_SECRET_KEY=ваш_secret_key
YOOKASSA_TEST_MODE=true
# System Settings
MIN_WITHDRAWAL_AMOUNT=100 # Минимальная сумма вывода
ADMIN_PERCENTAGE=5 # Процент администратора при выводе
WITHDRAWAL_DELAY_DAYS=0 # Задержка вывода (0 = без задержки)balancecore_bot_tg_project/
├── bot/ # Telegram бот
│ ├── handlers/ # Обработчики команд
│ ├── keyboards/ # Клавиатуры
│ ├── middlewares/ # Middleware
│ └── main.py # Точка входа бота
├── api/ # FastAPI приложение
│ ├── main.py # Основное API
│ ├── admin_ui.py # Админ-панель
│ ├── templates/ # HTML шаблоны
│ └── static/ # CSS/JS файлы
├── core/ # Основная логика
│ ├── models/ # Модели базы данных
│ │ ├── user.py # Модель пользователя
│ │ ├── deposit.py # Модель депозита с процентами
│ │ ├── transaction.py # Модель транзакций
│ │ └── payment.py # Модель платежей ЮKassa
│ ├── services/ # Бизнес-логика
│ │ ├── interest.py # Сервис начисления процентов
│ │ └── payment.py # Сервис работы с ЮKassa
│ ├── repositories/ # Репозитории для работы с БД
│ ├── config.py # Конфигурация
│ └── db.py # Подключение к БД
├── migrations/ # Alembic миграции
├── scripts/ # Скрипты развертывания
│ └── daily_interest.py # Ежедневное начисление процентов
├── tests/ # Тесты
└── docker-compose.yml # Docker конфигурация
pip install -r requirements.txtmake testmake migrate-createЛоги сохраняются в директории logs/
- Настройте переменные окружения
- Запустите через Docker:
docker-compose up -d - Настройте reverse proxy (nginx)
- Настройте SSL сертификаты
- API health check:
/health - Логи Docker:
docker-compose logs -f - Статус сервисов:
make status - Логи начисления процентов:
logs/daily_interest.log
# Ручной запуск начисления процентов
python scripts/daily_interest.py
# Через Docker
docker-compose exec bot python scripts/daily_interest.py
# Настройка cron для автоматического начисления
# Добавьте в crontab:
# 1 0 * * * cd /path/to/project && python scripts/daily_interest.pyMIT License