Skip to content

Repository files navigation

Against AI - Игра на выживание

Телеграм-бот для многопользовательской игры, в которой игроки соревнуются против нейросети Gemini в различных сценариях выживания.

Описание проекта

Against AI - это интерактивная игра для Telegram, которая позволяет игрокам объединяться в лобби и соревноваться в различных экстремальных ситуациях. Главная особенность игры заключается в том, что нейросеть Gemini оценивает шансы на выживание каждого игрока и создаёт захватывающую историю на основе действий игроков.

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

  • Многопользовательский режим: несколько игроков могут объединяться в одном лобби
  • Управление лобби: создание лобби, приглашение других игроков, назначение капитана
  • Выбор сценариев: капитан может выбрать готовый сценарий или создать свой
  • Интерактивный интерфейс: удобное отслеживание статуса игры и действий игроков
  • Динамические истории: нейросеть генерирует уникальные истории на основе действий каждого игрока

Принцип игры

  1. Игроки объединяются в лобби
  2. Капитан выбирает или создаёт сценарий для игры
  3. Каждый игрок описывает свои действия в данной ситуации
  4. Нейросеть Gemini анализирует действия и оценивает шансы на выживание
  5. Игроки получают захватывающую историю о том, что произошло с каждым из них
  6. В конце истории указывается, кто выжил, а кто нет
  7. Игра начинается заново с новым сценарием

Требования

  • Python 3.8+
  • Токен Telegram бота (получается у @BotFather)
  • API ключ Gemini (получается в Google AI Studio)

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

Метод 1: Запуск через Docker (рекомендуется)

  1. Клонируйте репозиторий:

    git clone https://github.com/yourusername/againstAI.git
    cd againstAI
  2. Создайте файл с переменными окружения:

    cp .env.example .env
  3. Отредактируйте файл .env, добавив свои токены:

    BOT_TOKEN=your_telegram_bot_token
    GEMINI_API_KEY=your_gemini_api_key
    
  4. Запустите контейнер с помощью Docker Compose:

    docker-compose up -d

Метод 2: Запуск напрямую

  1. Клонируйте репозиторий:

    git clone https://github.com/yourusername/againstAI.git
    cd againstAI
  2. Создайте виртуальное окружение и активируйте его:

    python -m venv venv
    
    # Для Windows
    venv\Scripts\activate
    
    # Для Linux/Mac
    source venv/bin/activate
  3. Установите зависимости:

    pip install -r requirements.txt
  4. Создайте файл с переменными окружения:

    cp .env.example .env
  5. Отредактируйте файл .env, добавив свои токены:

    BOT_TOKEN=your_telegram_bot_token
    GEMINI_API_KEY=your_gemini_api_key
    
  6. Запустите бота:

    python main.py

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

Основные команды

  • /start - Создать новое лобби
  • /join <lobby_id> - Присоединиться к существующему лобби
  • /lobby - Показать информацию о текущем лобби
  • /leave - Покинуть текущее лобби
  • /startgame - Начать игру (только для капитана)

Процесс игры

  1. Первый игрок создаёт лобби командой /start
  2. Он становится капитаном и может пригласить других игроков, поделившись ID лобби
  3. Другие игроки присоединяются командой /join <lobby_id>
  4. Когда все игроки присоединились, капитан начинает игру
  5. Капитан выбирает сценарий или вводит свой
  6. Игроки отправляют свои действия в выбранном сценарии
  7. Нейросеть анализирует действия и создает историю
  8. Игроки получают результат с указанием выживших
  9. Капитан начинает новый раунд с новым сценарием

Кастомизация сценариев

Вы можете добавить свои сценарии, отредактировав файл data/scenarios.txt. Каждый сценарий должен быть на отдельной строке.

Архитектура проекта

  • main.py - Точка входа приложения
  • config.py - Конфигурационные параметры
  • models.py - Модели данных (лобби, игроки)
  • handlers/ - Обработчики команд и сообщений
  • services/ - Интеграция с внешними сервисами (Gemini API)
  • utils/ - Вспомогательные функции
  • data/ - Данные (сценарии)

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

Бот реализует ряд мер безопасности:

  • Валидация имен и фамилий игроков
  • Ограничение длины сценариев и действий
  • Фильтрация специальных символов в текстовых данных
  • Запуск в Docker с пользователем с ограниченными правами

Лицензия

MIT License

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages