Skip to content

BogdanMod/Durak_Game_Bot

Repository files navigation

Бот для игры в дурака на деньги (ETH)

Telegram-бот для игры в карточную игру "Дурак" с возможностью ставок в Ethereum.

Возможности

  • 🎮 Игра в дурака с другим игроком
  • 💰 Ставки в ETH
  • 📊 Статистика игр
  • 💳 Пополнение и вывод средств
  • 🌐 Веб-интерфейс для игры через Telegram WebApp

Установка

  1. Клонируйте репозиторий или скачайте файлы

  2. Установите зависимости:

pip install -r requirements.txt
  1. Создайте файл .env на основе .env.example:
BOT_TOKEN=your_telegram_bot_token_here
WEBAPP_URL=https://your-webapp-url.com
DATABASE_URL=sqlite+aiosqlite:///./durak_bot.db
ETH_RPC_URL=https://mainnet.infura.io/v3/your_infura_key
PRIVATE_KEY=your_wallet_private_key_here
WALLET_ADDRESS=your_wallet_address_here
  1. Запустите бота:
python bot.py
  1. В отдельном терминале запустите веб-приложение:
cd web_app
uvicorn main:app --host 0.0.0.0 --port 8000

Структура проекта

.
├── bot.py                    # Точка входа для бота
├── main.py                   # Основная логика бота
├── database.py                # Модели базы данных
├── game_logic.py             # Логика игры в дурака
├── blockchain.py             # Интеграция с блокчейном
├── telegram_auth.py          # Валидация Telegram WebApp данных
├── game_locks.py             # Блокировки для защиты от race conditions
├── game_timeouts.py          # Управление таймаутами игроков
├── game_validator.py         # Валидация состояния игры
├── action_tracker.py          # Отслеживание действий для предотвращения дубликатов
├── requirements.txt           # Зависимости Python
├── .env.example              # Пример конфигурации
├── .gitignore                # Игнорируемые файлы
├── README.md                  # Документация
└── web_app/
    ├── main.py                # FastAPI приложение
    ├── static/                # Статические файлы
    └── templates/
        └── game.html          # Интерфейс игры

Основные функции

Бот

  • /start - Начать работу с ботом
  • /help - Справка по использованию

Игра

  1. Создайте новую игру через кнопку "🎮 Начать игру"
  2. Дождитесь подключения второго игрока (или присоединитесь к существующей игре)
  3. Откройте игру через веб-интерфейс
  4. Играйте, следуя правилам дурака

Финансы

  • Пополнение: Получите адрес для депозита через кнопку "📥 Пополнить баланс"
  • Вывод: Введите сумму и адрес в формате 0.1 0x1234...5678
  • Статистика: Просмотрите свою статистику через кнопку "📊 Статистика"

Правила игры

  • Игра ведется колодой из 36 карт
  • Цель - избавиться от всех карт
  • Атакующий ходит картой
  • Защитник должен отбить картой той же масти и старшего достоинства, или козырем
  • Если все карты отбиты, они убираются со стола
  • Если защитник не может отбить, он забирает все карты со стола
  • Победитель - тот, кто первым избавится от всех карт

Технологии

  • Python 3.8+
  • python-telegram-bot - Telegram Bot API
  • FastAPI - Веб-фреймворк
  • SQLAlchemy - ORM для работы с БД
  • Web3.py - Интеграция с Ethereum
  • SQLite - База данных
  • slowapi - Rate limiting для API

Безопасность и стабильность

Проект включает следующие механизмы защиты:

  • 🔒 Блокировки - защита от race conditions при одновременных действиях
  • ⏱️ Таймауты - автоматическое завершение ходов при превышении времени
  • 🚦 Rate Limiting - ограничение количества запросов для защиты от спама
  • Валидация - проверка целостности состояния игры и входных данных
  • 🔄 Транзакции - атомарность операций с базой данных
  • 🛡️ Защита от дубликатов - предотвращение повторной обработки действий

Примечания

  • Для работы с блокчейном требуется настройка RPC-узла (Infura, Alchemy и т.д.)
  • В продакшене рекомендуется использовать PostgreSQL вместо SQLite
  • Для хранения состояния игр в продакшене рекомендуется использовать Redis
  • Необходимо настроить HTTPS для веб-приложения для работы Telegram WebApp

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published