d2ca750a2d
1) Кнопки меню: раздел «Кнопки меню 🧩» в админке — показать/скрыть любую кнопку главного меню (Подобрать/Интенсив/Цены/Вопрос/Вебинар). Флаги в БД (bot_flags), дефолты в config.MENU_FEATURES (вебинар по умолчанию скрыт). Скрытый раздел не реагирует и на кодовые слова (интенсив выкл → «лето» игнорируется). Вебинар получил кнопку в меню (для теста ветки) + вход по callback из поста работает всегда. 2) Экстренное отключение (только супер-админ): /favi-stop → запрос пароля → бот уходит в аварийный режим и молчит для всех; /favi-start возвращает. Пароль хранится как PBKDF2-хэш в .env (FAVI_STOP_HASH), не в коде; сравнение константное, 3 попытки. pytest 43 passed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
54 lines
3.3 KiB
Bash
54 lines
3.3 KiB
Bash
# VK API Configuration
|
|
# Токен сообщества ВКонтакте (с правами на управление сообщениями)
|
|
VK_TOKEN=your_vk_community_token_here
|
|
|
|
# Идентификатор (ID) сообщества ВКонтакте (только цифры)
|
|
VK_GROUP_ID=0
|
|
|
|
# ID оператора / администратора ВКонтакте для отправки лидов и оповещений (только цифры)
|
|
OPERATOR_PEER_ID=12345678
|
|
|
|
# Список ID администраторов (через запятую) для управления услугами через чат
|
|
ADMIN_IDS=12345678
|
|
|
|
# Разрешённый источник (Origin) для CORS веб-формы (домен сайта). Для локальной отладки можно '*'
|
|
ALLOWED_ORIGIN=https://infocyber.pro
|
|
|
|
# Промокоды на скидку. Пока выключены. Поставь true, когда захочешь их выдавать клиентам.
|
|
PROMO_ENABLED=false
|
|
|
|
# ===== Email (SMTP) для уведомлений о заявках =====
|
|
# Адрес SMTP-сервера почты (например, smtp.yandex.ru / smtp.gmail.com / smtp.mail.ru)
|
|
SMTP_HOST=
|
|
# Порт: 465 для SSL, 587 для STARTTLS
|
|
SMTP_PORT=465
|
|
# Логин (полный email) и пароль (для Яндекс/Gmail — пароль приложения, не основной!)
|
|
SMTP_USER=
|
|
SMTP_PASSWORD=
|
|
# От кого отправлять (по умолчанию = SMTP_USER)
|
|
MAIL_FROM=
|
|
# Куда отправлять заявки (можно несколько через запятую)
|
|
MAIL_TO=group-zakaz@infocyber.pro
|
|
# Куда отправлять отклики на вакансии/набор в состав. Пусто = на тот же адрес, что MAIL_TO.
|
|
# Можно вынести на отдельный HR-адрес, напр. hr@infocyber.pro
|
|
HR_MAIL_TO=
|
|
# true — SSL (порт 465), false — STARTTLS (порт 587)
|
|
SMTP_USE_SSL=true
|
|
|
|
# --- Ссылки Кибершколы БАЗА (кнопки записи/оплаты в боте) ---
|
|
# UTM добавляются кодом автоматически; здесь только базовые URL. Замените при необходимости.
|
|
LINK_TRIAL=https://infocyber.pro/form/index.html
|
|
LINK_TARIFFS=https://infocyber.pro/#prices
|
|
LINK_GROUP_4=https://infocyber.pro/form/index.html?service_id=web_2
|
|
LINK_GROUP_8=https://infocyber.pro/form/index.html?service_id=web_3
|
|
LINK_IND_1=https://infocyber.pro/form/index.html?service_id=web_1
|
|
LINK_IND_4=https://infocyber.pro/form/index.html?service_id=web_4
|
|
LINK_IND_8=https://infocyber.pro/form/index.html?service_id=web_5
|
|
# Летний интенсив: отдельной страницы на сайте нет — ведём на общую форму (замените, когда появится)
|
|
LINK_SUMMER=https://infocyber.pro/form/index.html
|
|
|
|
# Экстренное отключение бота (/favi-stop) — ХЭШ пароля (PBKDF2), не сам пароль.
|
|
# Сгенерировать: py -3.11 -c "import hashlib,os; s=os.urandom(16); import sys; pw=sys.argv[1].encode(); print('pbkdf2_sha256$240000$'+s.hex()+'$'+hashlib.pbkdf2_hmac('sha256',pw,s,240000).hex())" "ВАШ_ПАРОЛЬ"
|
|
# Пусто — команда /favi-stop отключена.
|
|
FAVI_STOP_HASH=
|