Files
Kenik 3d709267ff Админка, защита и UX: быстрые ответы, статусы кандидатов, мульти-операторы, бан, прогресс-бар
Бот:
- Прогресс-бар (▰▰▱ Шаг N из 3) в шагах заявки
- Быстрые ответы по ключевым словам (таблица custom_faq) — отвечают до зова оператора;
  редактирование через админ-панель (раздел «Быстрые ответы»: добавить/список/удалить)
- Отклики в статистике: счётчик игроков/сотрудников по дисциплинам и должностям
- Статусы кандидатов (новый/на собесе/отказ/принят) — раздел «Кандидаты» в админке
- Несколько операторов: уведомления уходят всем из OPERATOR_PEER_IDS
- Часы работы (WORK_HOUR_START/END): вне часов хендофф сообщает «ответим утром»
- Временный бан при повторном флуде (усиление анти-DDoS)
- Старт-пинг администратору «бот запущен» (лёгкий healthcheck)

Док и зависимости:
- README.md (запуск, .env, автозапуск, админ-команды, структура)
- requirements.txt

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 10:00:56 +03:00

94 lines
5.6 KiB
Markdown

# Чат-бот ИКП (ВКонтакте) + веб-форма заявок
Бот сообщества **ИКП — Игра. Киберспорт. Профессионалы** для приёма заявок на тренировки
(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/` в репозиторий не попадают.