ce2860aec9
- проверка наличия Python в PATH; - создание .env из .env.example, если его нет (с открытием на заполнение); - установка зависимостей из requirements.txt; - далее как прежде: глушение дублей + цикл авто-перезапуска. bot_database.db создаётся кодом автоматически (с сидом услуг). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
50 lines
2.0 KiB
Batchfile
50 lines
2.0 KiB
Batchfile
@echo off
|
|
chcp 65001 >nul
|
|
cd /d "%~dp0"
|
|
title Бот ИКП (VK)
|
|
|
|
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
|
|
echo.
|
|
echo [%date% %time%] Запуск бота ИКП...
|
|
python bot.py
|
|
echo.
|
|
echo [%date% %time%] Бот остановился (код %errorlevel%). Перезапуск через 5 секунд...
|
|
echo Нажмите Ctrl+C, чтобы выйти полностью.
|
|
timeout /t 5 /nobreak >nul
|
|
goto loop
|