start_bot.bat: авто-подготовка окружения при первом запуске

- проверка наличия Python в PATH;
- создание .env из .env.example, если его нет (с открытием на заполнение);
- установка зависимостей из requirements.txt;
- далее как прежде: глушение дублей + цикл авто-перезапуска.
bot_database.db создаётся кодом автоматически (с сидом услуг).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Kenik
2026-06-26 18:20:24 +03:00
parent 0aaf285d54
commit ce2860aec9
+33 -4
View File
@@ -3,10 +3,39 @@ chcp 65001 >nul
cd /d "%~dp0" cd /d "%~dp0"
title Бот ИКП (VK) title Бот ИКП (VK)
REM Защита от нескольких экземпляров. ОБЯЗАТЕЛЬНО глушим старые процессы бота REM === Подготовка окружения при первом запуске ===
REM перед стартом: иначе два longpoll-инстанса (старый и новый) отвечают на одни
REM и те же нажатия, и цвета кнопок «пляшут» (старая палитра vs новая). REM 1) Проверяем, что Python доступен
REM Внутри бота дополнительно есть lock-файл (bot.lock) — подстраховка от дублей. 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 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 :loop