diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..31ac98e --- /dev/null +++ b/Makefile @@ -0,0 +1,52 @@ +.PHONY: help venv install run clean docker-up docker-down docker-logs + +help: + @echo "Доступные команды:" + @echo " make venv - Создать виртуальное окружение" + @echo " make install - Установить зависимости" + @echo " make run - Запустить бота локально" + @echo " make clean - Удалить venv и кэш" + @echo " make docker-up - Запустить через Docker Compose" + @echo " make docker-down - Остановить Docker контейнеры" + @echo " make docker-logs - Показать логи Docker" + +venv: + python3 -m venv .venv + @echo "Виртуальное окружение создано!" + @echo "Активируйте его: source .venv/bin/activate" + +install: venv + .venv/bin/pip install --upgrade pip + .venv/bin/pip install -r requirements.txt + @echo "Зависимости установлены!" + +run: + @if [ ! -f .env ]; then \ + echo "Ошибка: файл .env не найден!"; \ + echo "Создайте его: cp .env.example .env"; \ + exit 1; \ + fi + .venv/bin/python main.py + +clean: + rm -rf .venv + find . -type d -name "__pycache__" -exec rm -rf {} + + find . -type f -name "*.pyc" -delete + @echo "Очистка завершена!" + +docker-up: + @if [ ! -f .env ]; then \ + echo "Ошибка: файл .env не найден!"; \ + echo "Создайте его: cp .env.example .env"; \ + exit 1; \ + fi + docker-compose up -d + +docker-down: + docker-compose down + +docker-logs: + docker-compose logs -f bot + +docker-rebuild: + docker-compose up -d --build diff --git a/README.md b/README.md index e2381d1..6b708e6 100644 --- a/README.md +++ b/README.md @@ -45,33 +45,75 @@ docker-compose logs -f bot ### Локальная установка -#### 1. Клонирование репозитория +#### Автоматическая установка (рекомендуется) + +```bash +# Клонировать репозиторий +git clone http://103.137.249.134:3000/NANDI/tg_bot_language.git +cd tg_bot_language + +# Запустить скрипт установки +./setup.sh + +# Отредактировать .env и добавить токены +nano .env + +# Активировать виртуальное окружение +source .venv/bin/activate + +# Запустить бота +python main.py +``` + +#### Использование Makefile + +```bash +# Установить всё +make install + +# Запустить бота +make run + +# Показать все команды +make help +``` + +#### Ручная установка + +**1. Клонирование репозитория** ```bash git clone http://103.137.249.134:3000/NANDI/tg_bot_language.git cd tg_bot_language ``` -### 2. Установка зависимостей +**2. Создание виртуального окружения** ```bash +python3 -m venv .venv +source .venv/bin/activate +``` + +**3. Установка зависимостей** + +```bash +pip install --upgrade pip pip install -r requirements.txt ``` -### 3. Настройка окружения - -Скопируйте `.env.example` в `.env`: +**4. Настройка окружения** ```bash cp .env.example .env +nano .env # или любой редактор ``` -Отредактируйте `.env` и заполните необходимые параметры: +Заполните необходимые параметры: ```env BOT_TOKEN=your_telegram_bot_token_here OPENAI_API_KEY=your_openai_api_key_here -DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/language_bot +DATABASE_URL=postgresql+asyncpg://botuser:botpassword@localhost:5432/language_bot DEBUG=True ``` diff --git a/requirements.txt b/requirements.txt index bf6481e..673e3d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,5 +4,5 @@ asyncpg==0.30.0 alembic==1.14.0 python-dotenv==1.0.1 openai==1.57.3 -pydantic==2.10.3 +pydantic>=2.4.1,<2.10 pydantic-settings==2.6.1 diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..de4c0a2 --- /dev/null +++ b/setup.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +echo "🚀 Настройка проекта Telegram бота для изучения языков" +echo "" + +# Проверка Python +if ! command -v python3 &> /dev/null; then + echo "❌ Python3 не найден. Установите Python 3.11+" + exit 1 +fi + +echo "✅ Python $(python3 --version) найден" + +# Создание venv +if [ ! -d ".venv" ]; then + echo "📦 Создание виртуального окружения..." + python3 -m venv .venv + echo "✅ Виртуальное окружение создано" +else + echo "✅ Виртуальное окружение уже существует" +fi + +# Активация venv и установка зависимостей +echo "📥 Установка зависимостей..." +source .venv/bin/activate +pip install --upgrade pip > /dev/null +pip install -r requirements.txt + +echo "✅ Зависимости установлены" + +# Создание .env если не существует +if [ ! -f ".env" ]; then + echo "📝 Создание файла .env..." + cp .env.example .env + echo "⚠️ Не забудьте заполнить .env файл (BOT_TOKEN, OPENAI_API_KEY)" +else + echo "✅ Файл .env уже существует" +fi + +echo "" +echo "✨ Настройка завершена!" +echo "" +echo "Следующие шаги:" +echo "1. Отредактируйте .env и добавьте токены" +echo "2. Активируйте venv: source .venv/bin/activate" +echo "3. Запустите бота: python main.py" +echo "" +echo "Или используйте Makefile:" +echo " make run - Запустить бота" +echo " make docker-up - Запустить через Docker"