Skip to content

KeyC-code/Dota2DraftSageBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎮 Dota2 Draft Sage — персональный стратег для драфта в Dota 2

Tests

Этот бот помогает игрокам в Dota 2 принимать взвешенные решения на этапе драфта: подбирать контрпики, избегать неблагоприятных матчапов, строить оптимальные сборки и тактику. Анализ основан на данных о героях и генерируется с помощью нейросети GigaChat от Сбера.


🌟 Основные возможности

Для всех пользователей:

  • 🆓 3 бесплатных анализа драфта при первом запуске.
  • 🧩 Интерактивный драфт: пошаговое моделирование официального порядка банов и пиков (26 этапов).
  • 📊 Мгновенный анализ: бот выдаёт рекомендации по:
    • следующему герою для пика/бана,
    • позиции и роли,
    • сборке предметов,
    • прокачке способностей,
    • тактике на ранней, средней и поздней стадиях игры.
  • 🌐 Актуальные данные: список героев и текущий патч автоматически обновляются из Steam Web API.

Для премиум-пользователей:

  • 💎 Безлимитные запросы.
  • Приоритетная обработка (в будущем — приоритет в очереди к нейросети).

Для администратора:

  • /stat — статистика: общее число пользователей, премиум-подписок, среднее число бесплатных запросов.
  • /reload — принудительное обновление списка героев из Steam API.

🔁 Порядок драфта

Бот точно следует официальному турнирному драфту Dota 2 (26 шагов):

1–6:   Ban (3 на каждую команду)
7–10:  Pick (Radiant, Dire, Dire, Radiant)
11–14: Ban (2 на каждую команду)
15–18: Pick (Radiant, Dire, Dire, Radiant)
19–22: Ban (2 на каждую команду)
23–26: Pick (Dire, Radiant, Radiant, Dire)

Пользователь выбирает сторону (Radiant или Dire) и последовательно делает выбор за обе команды, чтобы смоделировать реальный драфт.


💳 Подписка

  • 1 месяц — 100 ⭐️ (Telegram Stars)
  • 3 месяца — 250 ⭐️ (экономия 17%)

После оплаты подписка активируется автоматически и даёт неограниченный доступ к анализу.


🗃️ Хранение данных

Бот использует SQLite (app/database/dota_copilot.db) с одной таблицей:

Таблица users

Поле Описание
user_id Уникальный ID Telegram
free_requests Оставшиеся бесплатные запросы (по умолчанию — 3)
subscribed Флаг активной подписки (TRUE/FALSE)
subscription_end Дата окончания подписки
registration_date Дата первого запуска
name Имя пользователя в Telegram

Все данные хранятся локально. Персональная информация не передаётся третьим лицам.


🤖 Интеграции

1. Steam Web API

  • Загружает актуальный список героев (на русском языке).
  • Определяет текущий патч игры через последний матч в публичной истории.
  • Обновляется ежедневно в 02:00 UTC через APScheduler.

2. GigaChat (Сбер)

  • Генерирует аналитику на основе системного промпта и текущего драфта.
  • Использует авторизацию через Basic Auth (ключ из .env).
  • Ответы очищаются от Markdown (**, #) для корректного отображения в Telegram.

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

Требования

  • Python 3.10+
  • Docker (опционально)

1. Клонирование

git clone https://github.com/your-username/dota2-draft-sage.git
cd dota2-draft-sage

2. Зависимости

pip install -r requirements.txt

3. Настройка .env

Создайте файл .env в корне проекта:

TELEGRAM_BOT_TOKEN=your_bot_token
ADMIN_ID=your_telegram_id
STEAM_API_KEY=your_steam_web_api_key
GIGACHAT_AUTH_KEY=your_base64_encoded_gigachat_key
CURRENT_PATCH=7.36
SYSTEM_PROMPT=Вы — эксперт по Dota 2 с 10-летним опытом...

🔑 GIGACHAT_AUTH_KEY — это Base64-кодированная строка вида client_id:secret. Получите её в личном кабинете GigaChat.

4. Запуск

python dotabot.py

Или через Docker:

docker build -t dota2-bot .
docker run -v $(pwd)/.env:/app/.env dota2-bot

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


dotabot.py                 # Основной файл бота
Dockerfile                 # Для контейнеризации
requirements.txt
.env                       # Переменные окружения (не в Git)
app/
├── config.py              # Константы (цены, порядок драфта)
├── keyboards.py           # Генерация клавиатур
├── state.py               # FSM состояния драфта
├── sub_manager.py         # Логика подписок
├── database/
│   └── user.py            # Работа с SQLite
└── api/
    ├── gigachat.py        # Интеграция с GigaChat
    └── steam.py           # Работа с Steam API

⚠️ Важно

  • Бот не хранит историю драфтов — каждый сеанс независим.
  • Анализ зависит от качества промпта и данных GigaChat.
  • Для работы обязательно наличие валидных API-ключей от Steam и GigaChat.

📈 Пример использования

  1. /start → «Начать анализ»
  2. Выбрать сторону: Radiant или Dire
  3. Пошагово выбирать героев и баны
  4. Нажать «📊 Анализ текущего драфта»
  5. Получить детальные рекомендации от ИИ

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published