diff --git a/start_bot.bat b/start_bot.bat index 5bd78f8..706f421 100644 --- a/start_bot.bat +++ b/start_bot.bat @@ -3,10 +3,39 @@ chcp 65001 >nul cd /d "%~dp0" title Бот ИКП (VK) -REM Защита от нескольких экземпляров. ОБЯЗАТЕЛЬНО глушим старые процессы бота -REM перед стартом: иначе два longpoll-инстанса (старый и новый) отвечают на одни -REM и те же нажатия, и цвета кнопок «пляшут» (старая палитра vs новая). -REM Внутри бота дополнительно есть lock-файл (bot.lock) — подстраховка от дублей. +REM === Подготовка окружения при первом запуске === + +REM 1) Проверяем, что Python доступен +where python >nul 2>&1 +if errorlevel 1 ( + echo [ОШИБКА] Python не найден в PATH. Установите Python 3 и запустите снова. + pause + exit /b +) + +REM 2) Нет .env — создаём из шаблона и открываем на заполнение +if not exist ".env" ( + if exist ".env.example" ( + copy /Y ".env.example" ".env" >nul + echo. + echo Создан файл .env из шаблона. Впишите VK_TOKEN, VK_GROUP_ID, ADMIN_IDS и др., + echo сохраните файл и запустите бота снова. + notepad ".env" + pause + exit /b + ) else ( + echo [ОШИБКА] Нет ни .env, ни .env.example. Настройте конфигурацию вручную. + pause + exit /b + ) +) + +REM 3) Устанавливаем зависимости (если уже стоят — отработает быстро) +echo Проверка зависимостей... +python -m pip install -r requirements.txt >nul 2>&1 + +REM 4) Защита от нескольких экземпляров: глушим старые процессы бота перед стартом +REM (иначе два longpoll-инстанса отвечают на одни нажатия). В боте ещё есть bot.lock. powershell -NoProfile -Command "Get-CimInstance Win32_Process | Where-Object { $_.Name -eq 'python.exe' -and $_.CommandLine -like '*bot.py*' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }" >nul 2>&1 :loop