Files
bot_vk_ikp_prodagi/README.md
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

5.6 KiB

Чат-бот ИКП (ВКонтакте) + веб-форма заявок

Бот сообщества ИКП — Игра. Киберспорт. Профессионалы для приёма заявок на тренировки (Counter-Strike 2, Dota 2, World of Tanks), набора игроков и сотрудников, FAQ и связи с оператором. Плюс отдельная веб-форма заявки на бесплатный урок.

Возможности

  • Заявка на тренировку — пошаговая форма (имя → телефон → направление → удобное время), бот «помнит» клиента.
  • Карьера в ИКП — набор игроков в состав и сотрудников (карусель с карточками).
  • FAQ — цены, услуги, контакты, о компании, кнопки-ссылки на соцсети.
  • Оператор — передача диалога живому человеку (учитываются часы работы, поддержка нескольких операторов).
  • Уведомления — о заявках/откликах операторам в VK и на почту (SMTP).
  • Админ-панель (в боте, по кнопке у админа): статистика, управление услугами, рассылка по подписчикам, быстрые ответы по ключевым словам, кандидаты и их статусы.
  • Защита — анти-флуд, временный бан, серверная валидация веб-формы, honeypot, rate-limit, CORS.

Установка

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 — он держит бота живым и перезапускает при сбое.

Вручную:

python bot.py

Автозапуск при входе в Windows: положите ярлык на start_bot.bat в папку shell:startup (Win+Rshell:startup).

Без валидного VK_TOKEN бот стартует в режиме эмуляции (консоль) — удобно для локальных тестов.

Веб-форма

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/ в репозиторий не попадают.