Телеграм-бот с игрой в крестики-нолики и генерацией промокодов. При победе игрок получает промокод на скидку!
- 🎯 Умный 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 (для продакшена)
git clone https://github.com/yourusername/XOBot.git
cd XOBot# Создаем .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))"
# Создаем виртуальное окружение
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
# Делаем скрипт исполняемым
chmod +x deploy.sh
# Запускаем деплой
./deploy.shСкрипт автоматически:
- Создаст виртуальное окружение
- Установит зависимости
- Инициализирует базу данных
- Настроит Nginx
- Настроит systemd service
- Запустит бота
- Откройте @BotFather в Telegram
- Отправьте команду
/mybots - Выберите вашего бота
- Выберите "Bot Settings" → "Menu Button"
- Укажите URL:
https://контентбот.рф/webapp/
Обработка победы игрока
{
"user_id": 123456789,
"username": "testuser",
"timestamp": "2025-12-08T14:30:00Z"
}Ответ:
{
"status": "ok",
"promo_code": "K7M2X",
"limit_reached": false,
"message_sent": true
}Обработка поражения игрока
Получение статистики пользователя
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 -fSQLite база 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 лет
- Документация Telegram Bot API
- Telegram WebApp API
- Flask Documentation
- python-telegram-bot Documentation
WebApp: https://контентбот.рф/webapp
SSL: Действует до марта 2026