- Супер-админ (config.SUPER_ADMIN_IDS, только через код): добавляет/удаляет обычных админов из бота (раздел «Администраторы 👑»), таблица admins. _is_admin теперь учитывает супер-админов, .env и добавленных из бота. - «Когда удобно созвониться» → выбор конкретного дня (кнопки на ближайшие даты) и времени (слоты), сохраняется как «День, ЧЧ:ММ». - Шаг согласия: инлайн-кнопки со ссылками на оферту и политику ПД (PDF), затем подтверждение. Старое вложение .docx убрано. - Маска отображения телефона: +7 (999) 123-45-67 в карточке и уведомлениях. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Чат-бот ИКП (ВКонтакте) + веб-форма заявок
Бот сообщества ИКП — Игра. Киберспорт. Профессионалы для приёма заявок на тренировки (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+R → shell: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/ в репозиторий не попадают.