# Чат-бот ИКП (ВКонтакте) + веб-форма заявок Бот сообщества **ИКП — Игра. Киберспорт. Профессионалы** для приёма заявок на тренировки (Counter-Strike 2, Dota 2, World of Tanks), набора игроков и сотрудников, FAQ и связи с оператором. Плюс отдельная веб-форма заявки на бесплатный урок. ## Возможности - **Заявка на тренировку** — пошаговая форма (имя → телефон → направление → удобное время), бот «помнит» клиента. - **Карьера в ИКП** — набор игроков в состав и сотрудников (карусель с карточками). - **FAQ** — цены, услуги, контакты, о компании, кнопки-ссылки на соцсети. - **Оператор** — передача диалога живому человеку (учитываются часы работы, поддержка нескольких операторов). - **Уведомления** — о заявках/откликах операторам в VK и на почту (SMTP). - **Админ-панель** (в боте, по кнопке у админа): статистика, управление услугами, рассылка по подписчикам, быстрые ответы по ключевым словам, кандидаты и их статусы. - **Защита** — анти-флуд, временный бан, серверная валидация веб-формы, honeypot, rate-limit, CORS. ## Установка ```bash pip install -r requirements.txt ``` Зависимости: `vk_api`, `requests`, `openpyxl`, `Pillow`. ## Настройка `.env` Скопируйте `.env.example` в `.env` и заполните. Файл `.env` в git **не попадает** (см. `.gitignore`). | Переменная | Назначение | |---|---| | `VK_TOKEN` | Токен сообщества ВК (права на сообщения) | | `VK_GROUP_ID` | ID сообщества (цифры) | | `OPERATOR_PEER_ID` | ID оператора по умолчанию для уведомлений | | `OPERATOR_PEER_IDS` | Несколько операторов через запятую (опц.) | | `ADMIN_IDS` | ID администраторов через запятую | | `WORK_HOUR_START` / `WORK_HOUR_END` | Часы работы (по умолч. 9 и 21) | | `ALLOWED_ORIGIN` | Домен сайта для CORS веб-формы | | `PROMO_ENABLED` | Промокоды (по умолч. `false`) | | `SMTP_HOST` / `SMTP_PORT` / `SMTP_USER` / `SMTP_PASSWORD` | SMTP для писем (для Яндекс/Gmail — пароль приложения) | | `MAIL_FROM` / `MAIL_TO` | Отправитель и получатель уведомлений о заявках | | `HR_MAIL_TO` | Куда слать отклики на вакансии (по умолч. = `MAIL_TO`) | > Без SMTP письма просто не отправляются (тихо пропускаются) — на работу бота это не влияет. ## Запуск бота **Просто:** двойной клик по `start_bot.bat` — он держит бота живым и перезапускает при сбое. **Вручную:** ```bash python bot.py ``` **Автозапуск при входе в Windows:** положите ярлык на `start_bot.bat` в папку `shell:startup` (`Win+R` → `shell:startup`). Без валидного `VK_TOKEN` бот стартует в режиме эмуляции (консоль) — удобно для локальных тестов. ## Веб-форма ```bash python form/server.py ``` Откройте http://localhost:8000/index.html . Заявки пишутся в SQLite (источник правды) и дублируются в Excel. ## Админ-панель (в боте) У администратора в главном меню есть кнопка **«Админка ⚙️»**. Разделы: Статистика, Кандидаты, Управление услугами, Быстрые ответы, Рассылка. Доступ — строго по `ADMIN_IDS`. Текстовые команды (альтернатива кнопкам): - `стата` — статистика - `ред [N] [поле] [значение]`, `доб [Имя] | [Цена] | [Описание]`, `удал [N]` — услуги - `фак доб [слово] | [ответ]`, `фак удал [N]` — быстрые ответы - `статус [N] [новый статус]` — статус кандидата - `рассылка [текст]` → `рассылка подтвердить` — рассылка подписчикам ## Структура ``` bot.py — логика бота (FSM, клавиатуры, админка, рассылка, защита) config.py — конфигурация из .env database.py — SQLite (заявки, отклики, услуги, быстрые ответы, статистика) mailer.py — отправка email form/ — веб-форма (server.py, index.html, script.js, style.css) help_img/ — картинки (логотип, дисциплины, карьера) start_bot.bat — запуск с авто-перезапуском ``` ## Данные `bot_database.db`, `.env`, `*.xlsx`, `*.log` и бэкапы `help_img/_orig/` в репозиторий не попадают.