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:
+33
-4
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user