Compare commits
3 Commits
26b6df77ef
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ce2860aec9 | |||
| 0aaf285d54 | |||
| ffdd7fc1fc |
@@ -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
@@ -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
@@ -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
@@ -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