Skip to content

mixmaster1989/XOBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🎮 XOBot - Telegram Tic Tac Toe Game

License: MIT Python 3.11+ Code style: black

Телеграм-бот с игрой в крестики-нолики и генерацией промокодов. При победе игрок получает промокод на скидку!

🌟 Особенности

  • 🎯 Умный AI - непобедимый алгоритм Minimax с alpha-beta pruning
  • 💝 Красивый дизайн - пастельные цвета, адаптирован под женскую аудиторию 25-40 лет
  • 🎁 Промокоды - до 3 промокодов в день при победе
  • 📱 Telegram WebApp - нативная интеграция с Telegram
  • 🎨 Анимации - конфетти, плавные переходы, вибрация
  • 🔒 Безопасность - rate limiting, валидация, HTTPS

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

XOBot/
├── config.py              # Конфигурация приложения
├── database.py            # Работа с SQLite базой данных
├── promo_generator.py     # Генератор промокодов
├── api.py                 # Flask API endpoints
├── bot.py                 # Telegram Bot
├── run.py                 # Главный entry point
├── requirements.txt       # Python зависимости
├── .env                   # Переменные окружения (создать из .env.example)
├── nginx.conf             # Nginx конфигурация
├── deploy.sh              # Скрипт деплоя
├── systemd/
│   └── xobot.service      # Systemd service
└── webapp/
    ├── index.html         # HTML структура
    ├── styles.css         # Стили
    ├── telegram-init.js   # Инициализация Telegram WebApp
    ├── game.js            # Игровая логика (Minimax AI)
    ├── ui.js              # UI контроллер
    ├── api-client.js      # API клиент
    ├── app.js             # Главный контроллер
    └── assets/
        └── confetti.js    # Анимация конфетти

📋 Требования

  • Python 3.11 или выше
  • Telegram Bot Token (получить у @BotFather)
  • Домен с SSL сертификатом (для продакшена)
  • Nginx (для продакшена)

🚀 Установка и запуск

1. Клонирование репозитория

git clone https://github.com/yourusername/XOBot.git
cd XOBot

2. Подготовка окружения

# Создаем .env файл из примера
cp .env.example .env

# Редактируем .env и добавляем токен бота
nano .env  # или используйте любой редактор

В .env файле укажите:

BOT_TOKEN=ваш_токен_от_BotFather
WEBAPP_URL=https://yourdomain.com/webapp
API_URL=https://yourdomain.com/api
SECRET_KEY=случайная_строка_минимум_32_символа

💡 Совет: Для генерации SECRET_KEY используйте:

python -c "import secrets; print(secrets.token_hex(32))"

2. Локальный запуск (для разработки)

# Создаем виртуальное окружение
python3 -m venv venv
source venv/bin/activate

# Устанавливаем зависимости
pip install -r requirements.txt

# Инициализируем базу данных
python database.py

# Запускаем приложение
python run.py

Бот будет доступен в Telegram, WebApp локально на http://localhost:5000/webapp

3. Деплой на сервер

# Делаем скрипт исполняемым
chmod +x deploy.sh

# Запускаем деплой
./deploy.sh

Скрипт автоматически:

  • Создаст виртуальное окружение
  • Установит зависимости
  • Инициализирует базу данных
  • Настроит Nginx
  • Настроит systemd service
  • Запустит бота

4. Регистрация WebApp в BotFather

  1. Откройте @BotFather в Telegram
  2. Отправьте команду /mybots
  3. Выберите вашего бота
  4. Выберите "Bot Settings" → "Menu Button"
  5. Укажите URL: https://контентбот.рф/webapp/

🎮 API Endpoints

POST /api/game/win

Обработка победы игрока

{
  "user_id": 123456789,
  "username": "testuser",
  "timestamp": "2025-12-08T14:30:00Z"
}

Ответ:

{
  "status": "ok",
  "promo_code": "K7M2X",
  "limit_reached": false,
  "message_sent": true
}

POST /api/game/lose

Обработка поражения игрока

GET /api/user/stats/{user_id}

Получение статистики пользователя

GET /api/health

Health check endpoint

🤖 Команды бота

  • /start - Приветствие и кнопка запуска игры
  • /play - Запустить игру
  • /help - Правила игры
  • /history - История игр и статистика
  • /promo_info - Информация о промокодах

🛠 Управление сервисом

# Проверить статус
sudo systemctl status xobot

# Перезапустить
sudo systemctl restart xobot

# Остановить
sudo systemctl stop xobot

# Запустить
sudo systemctl start xobot

# Логи
sudo journalctl -u xobot -f

📊 База данных

SQLite база xobot.db содержит 3 таблицы:

  • users - пользователи (user_id, username, wins, losses)
  • promo_codes - промокоды (code, user_id, expires_at, used)
  • game_history - история игр (user_id, result, timestamp, promo_code)

🎨 Технологии

Backend:

  • Python 3.11+
  • python-telegram-bot 21.7
  • Flask 3.0.3
  • SQLite

Frontend:

  • Vanilla JavaScript (ES6+)
  • CSS3 (Flexbox, Grid, Animations)
  • Telegram WebApp SDK
  • Canvas API (для конфетти)

🔒 Безопасность

  • ✅ HTTPS только (Let's Encrypt SSL)
  • ✅ Rate limiting (10 запросов/минута)
  • ✅ Валидация данных
  • ✅ CORS для Telegram WebApp
  • ✅ Безопасное хранение токенов

🤝 Вклад в проект

Мы приветствуем вклад в проект! Пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения информации о том, как внести свой вклад.

🔒 Безопасность

Если вы обнаружили уязвимость безопасности, пожалуйста, НЕ создавайте публичный issue. Вместо этого ознакомьтесь с SECURITY.md для получения инструкций по отчету об уязвимостях.

📝 Лицензия

Этот проект лицензирован под лицензией MIT - см. файл LICENSE для деталей.

👨‍💻 Автор

Создано с ❤️ для женской аудитории 25-40 лет

📚 Дополнительные ресурсы


WebApp: https://контентбот.рф/webapp
SSL: Действует до марта 2026

About

Telegram Tic Tac Toe Game with Minimax AI

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors