diff --git a/.env b/.env index e7741a9..e2da528 100644 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ MAX_BOT_TOKEN=f9LHodD0cOJHqFlGFuM7t9dFSt0jA36NxLc5aSP0CwDuCyWzssGKsFwuP4ymzoP64uqe6Ivl4_bEWKAOl6MI # При локальном запуске (python main.py): -DB_PATH=support.db +DB_PATH=data/support.db # При запуске через Docker DB_PATH переопределяется в docker-compose.yml # и указывает на /app/data/support.db (volume ./data/) diff --git a/.env.example b/.env.example index 8e8065f..20b2c23 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ MAX_BOT_TOKEN=your_token_here # При локальном запуске (python main.py): -DB_PATH=support.db +DB_PATH=data/support.db # При запуске через Docker DB_PATH переопределяется в docker-compose.yml # и указывает на /app/data/support.db (volume ./data/) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dc12cb7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +__pycache__ \ No newline at end of file diff --git a/config.py b/config.py index 37450e6..f9d370d 100644 --- a/config.py +++ b/config.py @@ -1,10 +1,16 @@ import os +from pathlib import Path from dotenv import load_dotenv load_dotenv() BOT_TOKEN: str = os.environ["MAX_BOT_TOKEN"] -DB_PATH: str = os.environ.get("DB_PATH", "support.db") + +_project_root = Path(__file__).parent +_db_path_raw = os.environ.get("DB_PATH", "data/support.db") +DB_PATH: str = str( + Path(_db_path_raw) if Path(_db_path_raw).is_absolute() else _project_root / _db_path_raw +) ADMIN_USERNAME: str = os.environ.get("ADMIN_USERNAME", "admin") ADMIN_PASSWORD: str = os.environ.get("ADMIN_PASSWORD", "changeme") ADMIN_HOST: str = os.environ.get("ADMIN_HOST", "0.0.0.0") diff --git a/data/support.db-shm b/data/support.db-shm index beaf4b9..7e7a31a 100644 Binary files a/data/support.db-shm and b/data/support.db-shm differ diff --git a/database/connection.py b/database/connection.py index 5ad1afe..1e20c75 100644 --- a/database/connection.py +++ b/database/connection.py @@ -9,6 +9,7 @@ _db: aiosqlite.Connection | None = None async def init_db() -> None: global _db + Path(config.DB_PATH).parent.mkdir(parents=True, exist_ok=True) _db = await aiosqlite.connect(config.DB_PATH) _db.row_factory = aiosqlite.Row await _db.execute("PRAGMA journal_mode=WAL") diff --git a/run.bat b/run.bat new file mode 100644 index 0000000..7b87cef --- /dev/null +++ b/run.bat @@ -0,0 +1,24 @@ +@echo off +chcp 65001 >nul +title Support Bot + +:: Переходим в папку скрипта +cd /d "%~dp0" + +:: Активируем venv если есть +if exist "venv\Scripts\activate.bat" ( + call venv\Scripts\activate.bat +) else if exist ".venv\Scripts\activate.bat" ( + call .venv\Scripts\activate.bat +) + +:: Устанавливаем зависимости если нужно (раскомментировать при первом запуске) +:: pip install -r requirements.txt + +python main.py + +if %ERRORLEVEL% neq 0 ( + echo. + echo [ОШИБКА] Бот завершился с кодом %ERRORLEVEL% + pause +)