3 Commits

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

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 18:20:24 +03:00
Kenik 0aaf285d54 Соцсети: Discord заменён на Lolka (новая ссылка через vk away)
Кнопка соцсетей и текст «О компании» теперь ведут на Lolka:
https://vk.com/away.php?to=https%3A%2F%2Flolka.gg%2FlNfM3F9DD&utf=1

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 17:58:05 +03:00
Kenik ffdd7fc1fc Seed: зашиты все 6 услуг (включая групповые) для свежих установок
Чтобы при запуске из репозитория услуги были сразу, а не только дефолтные 3.
Заявки/персональные данные по-прежнему только в локальной БД (не в git).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 17:53:34 +03:00
4 changed files with 53 additions and 9 deletions
+1 -1
View File
@@ -121,7 +121,7 @@ FAQ_ANSWERS = {
"• ВКонтакте: https://vk.com/ikpro\n"
"• VK Live (трансляции): https://live.vkvideo.ru/ikp\n"
"• Telegram: https://t.me/ikp_team\n"
"Discord: https://discord.gg/z92mAw7KEe"
"Lolka: https://vk.com/away.php?to=https%3A%2F%2Flolka.gg%2FlNfM3F9DD&utf=1"
)
}
+18 -3
View File
@@ -66,17 +66,32 @@ class DatabaseManager:
"1": {
"name": "Counter-Strike 2 🔫",
"price": "от 870 ₽ / занятие",
"description": "Тренировки по CS2: aim, раскидки гранат, командная тактика. Разовое занятие 870 ₽, абонементы от 2 790 ₽."
"description": "CS2: aim, раскидки, тактика. Разовое 870 ₽, абонементы от 2 790 ₽."
},
"2": {
"name": "Dota 2 🎮",
"price": "от 870 ₽ / занятие",
"description": "Тренировки по Dota 2: разбор реплеев, позиционка, фарм и тимплей. Разовое занятие 870 ₽, абонементы от 2 790 ₽."
"description": "Dota 2: реплеи, позиционка, фарм, тимплей. Разовое 870 ₽, абонементы от 2 790 ₽."
},
"3": {
"name": "World of Tanks 🛡️",
"price": "от 870 ₽ / занятие",
"description": "Тренировки по World of Tanks: позиционирование, сведение, тактика боёв. Разовое занятие 870 ₽, абонементы от 2 790 ₽."
"description": "WoT: позиционирование, сведение, тактика. Разовое 870 ₽, абонементы от 2 790 ₽."
},
"4": {
"name": "Counter-Strike 2 🔫 (групповой)",
"price": "от 870 ₽",
"description": "Тренировки в группе, командное взаимодействие."
},
"5": {
"name": "Dota 2 🎮 (групповой)",
"price": "от 870 ₽",
"description": "Тренировки в группе, командное взаимодействие."
},
"6": {
"name": "World of Tanks 🛡️ (групповой)",
"price": "от 870 ₽",
"description": "Тренировки в группе, командное взаимодействие."
}
}
for key, svc in default_services.items():
+1 -1
View File
@@ -148,7 +148,7 @@ def get_socials_keyboard() -> str:
keyboard.add_openlink_button("VK Live 📺", "https://live.vkvideo.ru/ikp")
keyboard.add_line()
keyboard.add_openlink_button("Telegram ✈️", "https://t.me/ikp_team")
keyboard.add_openlink_button("Discord 🎧", "https://discord.gg/z92mAw7KEe")
keyboard.add_openlink_button("Lolka 🎮", "https://vk.com/away.php?to=https%3A%2F%2Flolka.gg%2FlNfM3F9DD&utf=1")
keyboard.add_line()
keyboard.add_openlink_button("ВКонтакте 🌐", "https://vk.com/ikpro")
keyboard.add_line()
+33 -4
View File
@@ -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