diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..550f414
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,68 @@
+# Git
+.git
+.gitignore
+.gitattributes
+
+# Python
+__pycache__/
+*.py[cod]
+*$py.class
+*.so
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# Virtual Environment
+venv/
+env/
+ENV/
+.venv
+
+# IDE
+.vscode/
+.idea/
+*.swp
+*.swo
+*~
+.DS_Store
+
+# Logs
+logs/
+*.log
+
+# Docker
+Dockerfile
+docker-compose.yml
+.dockerignore
+
+# Documentation
+docs/
+reports/
+site/
+task/
+*.md
+!requirements.txt
+
+# Cache (будет монтироваться через volume)
+src/data/cache/
+src/data/users/
+
+# Temporary files
+*.tmp
+*.bak
+*.swp
+.cache/
diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..d0d403b
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,3 @@
+# Telegram Bot Configuration
+# Получите токен у @BotFather в Telegram
+BOT_TOKEN=your_bot_token_here
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..084abc8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,55 @@
+# Переменные окружения
+.env
+
+# Python
+__pycache__/
+*.py[cod]
+*$py.class
+*.so
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# Virtual Environment
+venv/
+env/
+ENV/
+.venv
+
+# IDE
+.vscode/
+.idea/
+*.swp
+*.swo
+*~
+.DS_Store
+
+# Logs
+logs/
+*.log
+
+# Данные пользователей и кеш
+src/data/cache/
+src/data/users/
+
+# Temporary files
+*.tmp
+*.bak
+.cache/
+
+# OS
+Thumbs.db
diff --git a/DOCKER.md b/DOCKER.md
new file mode 100644
index 0000000..e7a18e7
--- /dev/null
+++ b/DOCKER.md
@@ -0,0 +1,359 @@
+# 🐳 Docker - Руководство по развертыванию
+
+## Содержание
+- [Быстрый старт](#быстрый-старт)
+- [Подробная настройка](#подробная-настройка)
+- [Управление контейнером](#управление-контейнером)
+- [Мониторинг и отладка](#мониторинг-и-отладка)
+- [Производственное развертывание](#производственное-развертывание)
+
+## Быстрый старт
+
+### 1. Установка Docker
+
+**Ubuntu/Debian:**
+```bash
+# Установка Docker
+curl -fsSL https://get.docker.com -o get-docker.sh
+sudo sh get-docker.sh
+
+# Установка Docker Compose
+sudo apt install docker-compose-plugin
+
+# Добавление пользователя в группу docker
+sudo usermod -aG docker $USER
+newgrp docker
+```
+
+**macOS:**
+```bash
+# Установка через Homebrew
+brew install --cask docker
+```
+
+**Windows:**
+Скачайте [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop/)
+
+### 2. Настройка проекта
+
+```bash
+# Клонирование репозитория
+git clone https://github.com/EDeev/mospoly-helper.git
+cd mospoly-helper
+
+# Создание файла .env
+cp .env.example .env
+
+# Редактирование .env (добавьте ваш BOT_TOKEN)
+nano .env
+```
+
+### 3. Запуск
+
+```bash
+# Сборка и запуск в фоновом режиме
+docker-compose up -d
+
+# Проверка статуса
+docker-compose ps
+
+# Просмотр логов
+docker-compose logs -f
+```
+
+## Подробная настройка
+
+### Структура Docker-файлов
+
+```
+mospoly-helper/
+├── Dockerfile # Описание образа контейнера
+├── docker-compose.yml # Конфигурация сервисов
+├── .dockerignore # Исключения при сборке
+├── .env # Переменные окружения (не в Git!)
+└── .env.example # Шаблон переменных окружения
+```
+
+### Переменные окружения (.env)
+
+```env
+# Основная конфигурация
+BOT_TOKEN=your_bot_token_here
+```
+
+### Volumes (монтируемые директории)
+
+Данные сохраняются между перезапусками контейнера благодаря volumes:
+
+| Локальная директория | Директория в контейнере | Назначение |
+|----------------------|-------------------------|------------|
+| `./src/videos` | `/app/src/videos` | Исходные видеофрагменты (read-only) |
+| `./src/data/cache` | `/app/src/data/cache` | Кеш сгенерированных маршрутов |
+| `./src/data/users` | `/app/src/data/users` | Данные пользователей |
+| `./logs` | `/app/logs` | Журналы работы бота |
+
+## Управление контейнером
+
+### Основные команды
+
+```bash
+# Запуск
+docker-compose up -d # В фоновом режиме
+docker-compose up # С выводом логов в терминал
+
+# Остановка
+docker-compose stop # Остановка без удаления
+docker-compose down # Остановка и удаление контейнера
+
+# Перезапуск
+docker-compose restart # Быстрый перезапуск
+docker-compose down && docker-compose up -d # Полный перезапуск
+
+# Пересборка
+docker-compose build # Пересборка образа
+docker-compose up -d --build # Пересборка и запуск
+```
+
+### Работа с контейнером
+
+```bash
+# Выполнение команд внутри контейнера
+docker-compose exec mospoly-helper-bot python combine.py
+
+# Интерактивная оболочка
+docker-compose exec mospoly-helper-bot /bin/bash
+
+# Копирование файлов
+docker cp local_file.txt mospoly-helper-bot:/app/
+docker cp mospoly-helper-bot:/app/file.txt ./
+```
+
+## Мониторинг и отладка
+
+### Просмотр логов
+
+```bash
+# Все логи
+docker-compose logs
+
+# Последние 100 строк с обновлением
+docker-compose logs --tail=100 -f
+
+# Логи за последний час
+docker-compose logs --since 1h
+
+# Логи конкретного сервиса
+docker-compose logs mospoly-helper-bot
+```
+
+### Проверка состояния
+
+```bash
+# Статус контейнеров
+docker-compose ps
+
+# Использование ресурсов
+docker stats mospoly-helper-bot
+
+# Проверка health check
+docker inspect --format='{{.State.Health.Status}}' mospoly-helper-bot
+```
+
+### Отладка проблем
+
+```bash
+# Проверка сети
+docker network inspect mospoly-helper_default
+
+# Инспектирование контейнера
+docker inspect mospoly-helper-bot
+
+# События Docker
+docker events --filter container=mospoly-helper-bot
+```
+
+## Производственное развертывание
+
+### 1. Подготовка сервера
+
+```bash
+# Обновление системы
+sudo apt update && sudo apt upgrade -y
+
+# Установка Docker и Docker Compose
+curl -fsSL https://get.docker.com -o get-docker.sh
+sudo sh get-docker.sh
+sudo apt install docker-compose-plugin
+
+# Создание пользователя для бота
+sudo useradd -m -s /bin/bash botuser
+sudo usermod -aG docker botuser
+```
+
+### 2. Настройка автозапуска
+
+Docker Compose автоматически настроит перезапуск контейнера благодаря `restart: unless-stopped` в docker-compose.yml.
+
+Проверка:
+```bash
+# Перезагрузка сервера
+sudo reboot
+
+# После перезагрузки проверка
+docker-compose ps
+```
+
+### 3. Настройка logrotate
+
+Создайте файл `/etc/logrotate.d/docker-containers`:
+
+```
+/var/lib/docker/containers/*/*.log {
+ rotate 7
+ daily
+ compress
+ missingok
+ delaycompress
+ copytruncate
+}
+```
+
+### 4. Мониторинг
+
+Используйте systemd для мониторинга:
+
+```bash
+# Создайте файл /etc/systemd/system/mospoly-bot.service
+[Unit]
+Description=MosPoly Helper Bot
+Requires=docker.service
+After=docker.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+WorkingDirectory=/path/to/mospoly-helper
+ExecStart=/usr/bin/docker-compose up -d
+ExecStop=/usr/bin/docker-compose down
+User=botuser
+
+[Install]
+WantedBy=multi-user.target
+```
+
+```bash
+# Активация сервиса
+sudo systemctl daemon-reload
+sudo systemctl enable mospoly-bot.service
+sudo systemctl start mospoly-bot.service
+sudo systemctl status mospoly-bot.service
+```
+
+### 5. Резервное копирование
+
+```bash
+# Скрипт резервного копирования (backup.sh)
+#!/bin/bash
+DATE=$(date +%Y%m%d_%H%M%S)
+BACKUP_DIR="/backup/mospoly-bot"
+
+mkdir -p $BACKUP_DIR
+
+# Остановка контейнера
+docker-compose stop
+
+# Резервное копирование данных
+tar -czf $BACKUP_DIR/data_$DATE.tar.gz ./src/data
+
+# Запуск контейнера
+docker-compose start
+
+# Удаление старых резервных копий (старше 30 дней)
+find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
+```
+
+Добавьте в crontab:
+```bash
+# Резервное копирование каждый день в 3:00
+0 3 * * * /path/to/backup.sh
+```
+
+## Обновление бота
+
+```bash
+# 1. Получение обновлений
+git pull
+
+# 2. Остановка контейнера
+docker-compose down
+
+# 3. Пересборка образа
+docker-compose build
+
+# 4. Запуск обновленной версии
+docker-compose up -d
+
+# 5. Проверка логов
+docker-compose logs -f
+```
+
+## Очистка ресурсов
+
+```bash
+# Удаление неиспользуемых образов
+docker image prune -a
+
+# Удаление неиспользуемых volumes
+docker volume prune
+
+# Полная очистка системы Docker
+docker system prune -a --volumes
+```
+
+## Решение типичных проблем
+
+### Проблема: Контейнер не запускается
+
+```bash
+# Проверка логов
+docker-compose logs
+
+# Проверка переменных окружения
+docker-compose config
+
+# Пересборка образа
+docker-compose build --no-cache
+docker-compose up -d
+```
+
+### Проблема: Недостаточно места на диске
+
+```bash
+# Проверка использования места
+docker system df
+
+# Очистка
+docker system prune -a
+```
+
+### Проблема: Контейнер постоянно перезапускается
+
+```bash
+# Проверка статуса health check
+docker inspect --format='{{.State.Health}}' mospoly-helper-bot
+
+# Запуск без автоперезапуска для отладки
+docker-compose run --rm mospoly-helper-bot python bot.py
+```
+
+## Полезные ссылки
+
+- [Официальная документация Docker](https://docs.docker.com/)
+- [Docker Compose documentation](https://docs.docker.com/compose/)
+- [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)
+
+---
+
+
+Создано с ❤️ для удобства развертывания МосПолиХелпер
+
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..2679cdc
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,31 @@
+# Используем официальный Python образ
+FROM python:3.10-slim
+
+# Устанавливаем рабочую директорию
+WORKDIR /app
+
+# Устанавливаем системные зависимости и FFmpeg
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends \
+ ffmpeg \
+ && rm -rf /var/lib/apt/lists/*
+
+# Копируем requirements.txt
+COPY requirements.txt .
+
+# Устанавливаем Python зависимости
+RUN pip install --no-cache-dir -r requirements.txt
+
+# Копируем исходный код проекта
+COPY src/ /app/src/
+
+# Создаем необходимые директории для данных
+RUN mkdir -p /app/src/data/cache \
+ /app/src/data/users \
+ /app/logs
+
+# Устанавливаем рабочую директорию для запуска бота
+WORKDIR /app/src/code
+
+# Команда для запуска бота
+CMD ["python", "bot.py"]
diff --git a/QUICKSTART.md b/QUICKSTART.md
new file mode 100644
index 0000000..6155319
--- /dev/null
+++ b/QUICKSTART.md
@@ -0,0 +1,91 @@
+# 🚀 Быстрый старт - МосПолиХелпер
+
+## Запуск за 3 минуты
+
+### Шаг 1: Клонирование репозитория
+```bash
+git clone https://github.com/EDeev/mospoly-helper.git
+cd mospoly-helper
+```
+
+### Шаг 2: Настройка токена бота
+```bash
+# Создайте файл .env из шаблона
+cp .env.example .env
+
+# Добавьте токен бота (получите у @BotFather в Telegram)
+echo "BOT_TOKEN=ваш_токен_здесь" > .env
+```
+
+### Шаг 3: Запуск через Docker
+```bash
+# Запуск бота
+docker-compose up -d
+
+# Проверка логов
+docker-compose logs -f
+```
+
+## Альтернатива: Запуск без Docker
+
+### Шаг 1: Установка зависимостей
+```bash
+# Установка Python зависимостей
+pip install -r requirements.txt
+
+# Установка FFmpeg
+# Ubuntu/Debian:
+sudo apt update && sudo apt install ffmpeg
+
+# macOS:
+brew install ffmpeg
+```
+
+### Шаг 2: Настройка токена
+```bash
+# Откройте src/code/config.py и замените токен
+nano src/code/config.py
+```
+
+### Шаг 3: Запуск
+```bash
+cd src/code
+python bot.py
+```
+
+## Проверка работы
+
+После запуска:
+1. Найдите бота в Telegram: [@MosPoly_Helperbot](https://t.me/MosPoly_Helperbot)
+2. Отправьте команду `/start`
+3. Попробуйте построить маршрут командой `/route`
+
+## Полезные команды Docker
+
+```bash
+# Остановка бота
+docker-compose down
+
+# Перезапуск
+docker-compose restart
+
+# Просмотр логов
+docker-compose logs -f
+
+# Обновление и перезапуск
+git pull
+docker-compose up -d --build
+```
+
+## Нужна помощь?
+
+- 📖 Подробная документация: [README.md](README.md)
+- 🐳 Руководство по Docker: [DOCKER.md](DOCKER.md)
+- 📧 Email: support@new-devs.ru
+- 🐙 Issues: [GitHub Issues](https://github.com/EDeev/mospoly-helper/issues)
+
+---
+
+
+Готово! Ваш бот запущен и готов к работе 🎉
+
diff --git a/README.md b/README.md
index de9d0e2..f66ef40 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,7 @@
[](https://python.org)
[](https://aiogram.dev/)
[](https://moviepy.readthedocs.io/)
+[](https://www.docker.com/)
[](https://t.me/MosPoly_Helperbot)
[](LICENSE)
@@ -38,6 +39,23 @@
## 🚀 Быстрый старт
+### 🐳 Запуск через Docker (рекомендуется)
+
+```bash
+# 1. Клонирование репозитория
+git clone https://github.com/EDeev/mospoly-helper.git
+cd mospoly-helper
+
+# 2. Настройка токена
+cp .env.example .env
+# Отредактируйте .env и добавьте ваш BOT_TOKEN
+
+# 3. Запуск
+docker-compose up -d
+```
+
+📖 **Подробнее**: [QUICKSTART.md](QUICKSTART.md) | [DOCKER.md](DOCKER.md)
+
### Команды бота
- `/start` — Приветствие и инструкции
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..50d622b
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,38 @@
+version: '3.8'
+
+services:
+ mospoly-helper-bot:
+ build:
+ context: .
+ dockerfile: Dockerfile
+ container_name: mospoly-helper-bot
+ restart: unless-stopped
+
+ environment:
+ # Токен бота из .env файла
+ - BOT_TOKEN=${BOT_TOKEN}
+
+ volumes:
+ # Монтируем папку с видео (исходники)
+ - ./src/videos:/app/src/videos:ro
+ # Монтируем папку с кешем (для сгенерированных видео)
+ - ./src/data/cache:/app/src/data/cache
+ # Монтируем папку с данными пользователей
+ - ./src/data/users:/app/src/data/users
+ # Монтируем папку с логами
+ - ./logs:/app/logs
+
+ # Настройки логирования Docker
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "10m"
+ max-file: "3"
+
+ # Проверка здоровья контейнера
+ healthcheck:
+ test: ["CMD-SHELL", "pgrep -f 'python bot.py' || exit 1"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+ start_period: 40s
diff --git a/src/README.md b/src/README.md
new file mode 100644
index 0000000..8d0b91b
--- /dev/null
+++ b/src/README.md
@@ -0,0 +1,365 @@
+# МосПолиХелпер 🎓
+
+**Телеграм-бот для навигации по кампусам Московского Политехнического Университета**
+
+[](https://python.org)
+[](https://aiogram.dev/)
+[](https://moviepy.readthedocs.io/)
+[](https://t.me/MosPoly_Helperbot)
+[](LICENSE)
+
+## 📋 Описание
+
+МосПолиХелпер — это практическое решение реальной проблемы ориентирования в кампусах Московского Политехнического Университета. Бот разработан студентами для студентов и предоставляет интерактивные видео-маршруты до любого кабинета в пяти основных кампусах университета.
+
+Проект создан в рамках проектной практики и демонстрирует применение современных технологий для решения повседневных задач студенческой жизни.
+
+### ✨ Основные возможности
+
+- 🗺️ **Интерактивная навигация** по 5 кампусам МосПолитеха
+- 🎥 **Динамические видео-маршруты** от входа на территорию или от входа в корпус
+- ⚡ **Мгновенная отдача** готовых маршрутов благодаря интеллектуальному кешированию
+- 📱 **Интуитивный интерфейс** с адаптивными inline-кнопками
+- 🔄 **Автоматическая обработка видео** с оптимизацией для Telegram (H.264, битрейт 1500k)
+- 🚀 **Высокая производительность** — время отклика менее 5 секунд для кешированных маршрутов
+- 📊 **Умная валидация** входных данных с подсказками пользователю
+
+### 🏢 Поддерживаемые кампусы
+
+| Кампус | Код | Формат номера кабинета | Пример |
+|--------|-----|------------------------|---------|
+| **Большая Семёновская** | `bs` | [корпус][этаж]-[номер] | `а1-01`, `б2-15` |
+| **Павла Корчагина** | `pk` | пк[корпус][этаж][номер] | `пк1201`, `пк2315` |
+| **Прянишникова** | `pr` | пр[корпус][этаж][номер] | `пр1101`, `пр2208` |
+| **Михалковская** | `mi` | м[корпус][этаж][номер] | `м1205`, `м3110` |
+| **Автозаводская** | `av` | ав[корпус][этаж][номер] | `ав2301`, `ав1105` |
+
+> 📝 **Важно**: Указывайте номер кабинета точно в том формате, как он указан в личном кабинете или расписании
+
+## 🚀 Быстрый старт
+
+### Команды бота
+
+- `/start` — Приветствие и инструкции
+- `/help` — Справка по командам
+- `/route` — Построить маршрут до кабинета
+
+### Использование
+
+1. Запустите бота командой `/start`
+2. Выберите команду `/route`
+3. Укажите кампус из предложенного списка
+4. Введите номер кабинета в точном формате
+5. Выберите тип маршрута (от территории или от входа в корпус)
+6. Получите видео с маршрутом
+
+## 🛠️ Архитектура и технический стек
+
+### 🧩 Технологии
+
+| Компонент | Технология | Версия | Назначение |
+|-----------|------------|---------|------------|
+| **Backend** | Python | 3.10+ | Основной язык разработки |
+| **Bot Framework** | Aiogram | 3.0.0 | Асинхронная работа с Telegram Bot API |
+| **Video Processing** | MoviePy | 1.0.3 | Обработка и монтаж видеофрагментов |
+| **Video Encoding** | FFmpeg | latest | Кодирование и оптимизация видео |
+| **Data Storage** | JSON | native | Хранение пользовательских сессий |
+| **State Management** | MemoryStorage | aiogram | Управление состояниями пользователей |
+
+### 🏗️ Модульная архитектура
+
+```
+src/code/
+├── bot.py # 🚀 Точка входа и координация приложения
+├── config.py # ⚙️ Конфигурационные параметры
+├── database.py # 💾 Управление пользовательскими данными
+├── handlers.py # 🎛️ Обработчики команд и callback'ов
+├── init.py # 🔧 Инициализация компонентов бота
+├── scripts.py # 🎬 Обработка видео и формирование маршрутов
+└── combine.py # 🔄 Утилита для предварительной генерации кеша
+```
+
+**Принципы проектирования:**
+- **Single Responsibility** — каждый модуль отвечает за конкретную задачу
+- **Dependency Injection** — слабая связанность между компонентами
+- **Async/Await** — асинхронная обработка для высокой производительности
+- **Error Handling** — корректная обработка ошибок на всех уровнях
+
+## 📁 Структура данных и файловая система
+
+```
+📦 mospoly-helper/
+├── 📂 src/code/ # Исходный код
+├── 📂 data/ # Рабочие данные
+│ ├── 📂 cache/ # Сгенерированные видеомаршруты
+│ │ ├── 📄 *-all.mp4 # Полные маршруты (от территории)
+│ │ └── 📄 *-small.mp4 # Короткие маршруты (от входа в корпус)
+│ ├── 📂 users/ # JSON-файлы сессий пользователей
+│ │ └── 📄 {user_id}.json # Данные конкретного пользователя
+│ └── 📂 videos/ # Библиотека исходных видеофрагментов
+│ ├── 📂 av/ # Автозаводская
+│ │ ├── 📂 buildings/ # Видео от входа до корпуса
+│ │ ├── 📂 floors/ # Видео по этажам
+│ │ └── 📂 offices/ # Видео до конкретных кабинетов
+│ ├── 📂 bs/ # Большая Семёновская
+│ ├── 📂 mi/ # Михалковская
+│ ├── 📂 pk/ # Павла Корчагина
+│ └── 📂 pr/ # Прянишникова
+├── 📂 logs/ # Журналы работы (рекомендуется)
+├── 📄 Dockerfile # Конфигурация Docker-образа
+├── 📄 docker-compose.yml # Оркестрация контейнеров
+├── 📄 .env # Переменные окружения (создать из .env.example)
+└── 📄 .env.example # Шаблон переменных окружения
+```
+
+## ⚡ Установка и настройка
+
+### 📋 Системные требования
+
+**Для запуска через Docker (рекомендуется):**
+- **OS**: Linux (Ubuntu 20.04+), macOS, Windows 10+
+- **Docker**: 20.10+ и Docker Compose
+- **RAM**: минимум 2 ГБ (рекомендуется 4 ГБ)
+- **Storage**: минимум 10 ГБ для видеофрагментов и кеша
+- **Network**: стабильное интернет-соединение
+
+**Для запуска без Docker:**
+- **OS**: Linux (Ubuntu 20.04+), macOS, Windows 10+
+- **Python**: 3.10 или выше
+- **FFmpeg**: последняя версия
+- **RAM**: минимум 2 ГБ (рекомендуется 4 ГБ)
+- **Storage**: минимум 10 ГБ для видеофрагментов и кеша
+- **Network**: стабильное интернет-соединение
+
+### 🔧 Установка зависимостей
+
+1. **Клонирование репозитория**
+```bash
+git clone https://github.com/EDeev/mospoly-helper.git
+cd mospoly-helper
+```
+
+2. **Установка Python-зависимостей**
+```bash
+pip install -r requirements.txt
+```
+
+3. **Установка FFmpeg**
+
+**Ubuntu/Debian:**
+```bash
+sudo apt update && sudo apt install ffmpeg
+```
+
+**macOS (с Homebrew):**
+```bash
+brew install ffmpeg
+```
+
+**Windows:**
+Скачайте с [официального сайта](https://ffmpeg.org/download.html) и добавьте в PATH
+
+### ⚙️ Конфигурация
+
+1. **Создание Telegram бота**
+ - Перейдите к [@BotFather](https://t.me/BotFather)
+ - Создайте нового бота командой `/newbot`
+ - Сохраните полученный токен
+
+2. **Настройка конфигурации**
+```python
+# config.py
+BOT_TOKEN = "YOUR_BOT_TOKEN_HERE" # Замените на ваш токен
+```
+
+3. **Создание структуры каталогов**
+```bash
+mkdir -p data/{cache,users,videos/{av,bs,mi,pk,pr}/{buildings,floors,offices}}
+mkdir -p logs
+```
+
+### 🚀 Запуск
+
+#### 🐳 Запуск через Docker (рекомендуется)
+
+**1. Подготовка:**
+```bash
+# Создайте файл .env из примера
+cp .env.example .env
+
+# Отредактируйте .env и добавьте ваш токен бота
+nano .env # или любой другой редактор
+```
+
+**2. Запуск контейнера:**
+```bash
+# Сборка и запуск в фоновом режиме
+docker-compose up -d
+
+# Просмотр логов
+docker-compose logs -f
+
+# Остановка контейнера
+docker-compose down
+
+# Перезапуск после изменений
+docker-compose restart
+```
+
+**3. Предварительная генерация кеша (опционально):**
+```bash
+docker-compose exec mospoly-helper-bot python combine.py
+```
+
+**Преимущества Docker:**
+- ✅ Изолированная среда выполнения
+- ✅ Автоматическая установка FFmpeg и всех зависимостей
+- ✅ Простое развертывание на сервере
+- ✅ Автоматический перезапуск при сбоях
+- ✅ Управление логами
+
+#### 💻 Запуск без Docker (альтернатива)
+
+**Основной режим:**
+```bash
+cd src/code
+python bot.py
+```
+
+**С логированием:**
+```bash
+python bot.py 2>&1 | tee ../../logs/bot.log
+```
+
+**Предварительная генерация кеша (опционально):**
+```bash
+python combine.py # Генерирует кеш для всех доступных маршрутов
+```
+
+## 🎯 Алгоритмы и оптимизации
+
+### 🎬 Обработка видео
+
+Система обработки видео использует продвинутые техники оптимизации:
+
+```python
+# Параметры кодирования (scripts.py)
+full_clip.write_videofile(
+ filename,
+ fps=30, # Оптимальная частота кадров
+ codec="libx264", # Эффективный кодек H.264
+ bitrate="1500k", # Баланс качество/размер
+ preset="fast", # Быстрое кодирование
+ ffmpeg_params=["-crf", "23"] # Constant Rate Factor для качества
+)
+```
+
+**Применяемые оптимизации:**
+- ✂️ **Удаление аудиодорожки** — экономия 30-40% размера файла
+- ⏩ **Ускорение в 2 раза** — сокращение времени просмотра
+- 📐 **Изменение разрешения до 400px** — оптимизация для мобильных устройств
+- 🗜️ **CRF 23** — оптимальный баланс качества и размера файла
+
+### ⚡ Система кеширования
+
+**Двухуровневое кеширование:**
+1. **Полные маршруты** (`*-all.mp4`) — от входа на территорию
+2. **Короткие маршруты** (`*-small.mp4`) — от входа в корпус
+
+**Алгоритм проверки кеша:**
+```python
+# Проверка существования готового файла
+cache_path = f"../data/cache/{route_id}-{'all' if full_route else 'small'}.mp4"
+if os.path.exists(cache_path):
+ return cache_path # Мгновенная отдача
+else:
+ return await make_full_clip(video_segments) # Генерация нового
+```
+
+### 📊 Производительность
+
+| Метрика | Кешированный маршрут | Новый маршрут |
+|---------|---------------------|---------------|
+| **Время отклика** | < 3 секунды | 15-30 секунд |
+| **Размер файла** | 2-8 МБ | аналогично |
+| **Качество видео** | 400p, 30fps | аналогично |
+| **Нагрузка на CPU** | минимальная | высокая |
+
+## 🧪 Оптимизации производительности
+
+| Компонент | До оптимизации | После оптимизации | Улучшение |
+|-----------|----------------|-------------------|-----------|
+| **Размер видео** | 15-25 МБ | 2-8 МБ | 🔻 70% |
+| **Время генерации** | 45-60 сек | 15-30 сек | 🔻 50% |
+| **Время отдачи (кеш)** | N/A | < 3 сек | ⚡ мгновенно |
+| **Использование RAM** | 200-300 МБ | 100-150 МБ | 🔻 40% |
+
+## 📦 combine.py — Пакетная генерация кеша
+
+Утилита для предварительной генерации видеомаршрутов:
+
+```python
+async def combine_all_videos():
+ """
+ Массовая генерация кеша для всех доступных маршрутов
+
+ Обрабатывает:
+ - Все корпуса: pr, pk, mi, av, bs
+ - Полные и короткие маршруты для каждого кабинета
+ - Пропускает несуществующие видеофрагменты
+ """
+ corpora = ["pr", "pk", "mi", "av", "bs"]
+
+ for corpus in corpora:
+ offices_path = f"../videos/{corpus}/offices"
+ for video_file in os.listdir(offices_path):
+ # Генерация полного маршрута
+ await make_full_clip([building_path, floor_path, office_path])
+ # Генерация короткого маршрута
+ await make_full_clip([floor_path, office_path])
+```
+
+**Использование:**
+```bash
+cd src/code
+python combine.py # Запуск в фоновом режиме для больших объемов
+```
+
+## 👨💻 Команда разработки
+
+Проект создан в рамках проектной практики студентами группы **241-327** направления "Системная и программная инженерия":
+
+| Участник | Роль | Вклад | Контакты |
+|----------|------|-------|----------|
+| **[Деев Егор Викторович](https://github.com/EDeev)** | Tech Lead & Backend Developer | Архитектура системы, обработка видео, оптимизация производительности | [@EDeev](https://t.me/EDeev) |
+| **[Сапрыкин Пётр Иванович](https://github.com/PetrSaprykin)** | Frontend & UX Developer | Пользовательский интерфейс, логика взаимодействия, тестирование | [@PetrSaprykin](https://github.com/PetrSaprykin) |
+| **[Старков Руслан Владимирович](https://github.com/RayStar-k)** | DevOps & QA Engineer | Развертывание, мониторинг, обеспечение качества | [@RayStar-k](https://github.com/RayStar-k) |
+
+**Научное руководство:**
+- **Куратор практики**: Баринова Наталья Владимировна
+- **Кураторы проектной деятельности**: Киреева Галина Ивановна, Будылина Евгения Александровна
+
+## 📞 Поддержка и контакты
+
+### 🆘 Получение помощи
+
+**Официальные каналы поддержки:**
+
+1. **📧 Email**: [support@new-devs.ru](mailto:support@new-devs.ru)
+ - Время ответа: 24-48 часов
+ - Для технических вопросов и предложений
+
+2. **🐙 GitHub Issues**: [Создать issue](https://github.com/EDeev/mospoly-helper/issues)
+ - Для сообщений об ошибках и feature requests
+ - Публичное обсуждение и tracking
+
+## 📄 Лицензия и правовая информация
+
+Этот проект создан в учебных целях как работа по дисциплине "Проектной практики" в Московском Политехническом Университете, 2024-2025 учебный год.
+
+---
+
+
+
МосПолиХелпер — делаем навигацию в университете простой и понятной! 🎓✨
+
Создано с ❤️ студентами МосПолитеха для студенческого сообщества
+
diff --git a/src/code/config.py b/src/code/config.py
index bd514c4..805d548 100644
--- a/src/code/config.py
+++ b/src/code/config.py
@@ -1 +1,3 @@
-BOT_TOKEN = "XXXXXXXXX" # @MosPoly_Helperbot
\ No newline at end of file
+import os
+
+BOT_TOKEN = os.getenv("BOT_TOKEN", "XXXXXXXXX") # @MosPoly_Helperbot
\ No newline at end of file