Initial commit: VK Sales Bot project structure
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,84 @@
|
||||
# Все тексты бота вынесены сюда для быстрой правки
|
||||
ASK_PARENT_CONSENT = (
|
||||
"👪 Укажите, пожалуйста, контактные данные родителя или опекуна. "
|
||||
"Вы можете предоставить их сейчас или пропустить этот шаг. "
|
||||
"Напишите 'пропустить', чтобы пропустить, или укажите ФИО родителя (два слова на кириллице):"
|
||||
)
|
||||
ASK_PARENT_FIO = "Укажите ФИО родителя (Фамилия Имя):"
|
||||
ASK_PARENT_PHONE = "Укажите телефон родителя в формате +7 (XXX) XXX-XX-XX:"
|
||||
PARENT_FIO_INVALID = "❌ ФИО родителя должно состоять из двух слов (Фамилия Имя) кириллицей."
|
||||
PARENT_PHONE_INVALID = "❌ Неверный формат телефона родителя. Пример: +7 (912) 345-67-89"
|
||||
PARENT_DATA_SKIPPED = "✅ Данные родителя пропущены. Продолжаем оформление."
|
||||
PARENT_DATA_SAVED = "✅ Данные родителя сохранены."
|
||||
|
||||
GREETING = (
|
||||
"Здравствуйте! 👋 Меня зовут Алексей, я специалист отдела продаж.\n\n"
|
||||
"Подскажите, как к вам обращаться? (Фамилия, Имя, Отчество)"
|
||||
)
|
||||
|
||||
ASK_FI = "Пожалуйста, укажите вашу фамилию и имя (два слова на кириллице):"
|
||||
FIO_INVALID = "❌ ФИО должно состоять из двух слов (Фамилия Имя) и содержать только буквы кириллицы. Попробуйте ещё раз:"
|
||||
|
||||
ASK_PHONE = "Отлично! Теперь укажите ваш номер телефона в формате +7 (XXX) XXX-XX-XX:"
|
||||
PHONE_INVALID = "❌ Неверный формат. Нужно +7 и 10 цифр после кода страны. Пример: +7 (912) 345-67-89"
|
||||
|
||||
ASK_TIME = "Укажите удобное время по МСК для звонка (например: 'завтра после 18', 'в среду утром', 'сегодня в 15:00'):"
|
||||
TIME_INVALID = "❌ Не понял время. Попробуйте сказать иначе: 'завтра в 10 утра', 'сегодня после обеда'."
|
||||
|
||||
CONSENT_TEXT = (
|
||||
"🔐 Перед началом работы, пожалуйста, ознакомьтесь с условиями обработки персональных данных.\n\n"
|
||||
"Мы собираем ваши ФИО, номер телефона и предпочтительное время звонка для связи с вами "
|
||||
"по вопросам, связанным с услугами нашей компании. Ваши данные будут использоваться только "
|
||||
"сотрудниками нашей компании и не будут переданы третьим лицам.\n\n"
|
||||
"Дайте согласие на обработку персональных данных:"
|
||||
)
|
||||
ASK_CONSENT = "Пожалуйста, подтвердите согласие на обработку персональных данных (Да / Нет):"
|
||||
CONSENT_YES = "✅ Спасибо за согласие! Продолжим оформление заявки."
|
||||
CONSENT_NO = "❌ К сожалению, без согласия на обработку данных мы не можем продолжить. Спасибо за обращение! Хорошего дня."
|
||||
|
||||
BUTTON_CONSENT_YES = "✅ Да, согласен"
|
||||
BUTTON_CONSENT_NO = "❌ Нет, не согласен"
|
||||
|
||||
CONSENT_YES_PHRASES = ["да", "yes", "согласен", "даю согласие", "хорошо", "ok"]
|
||||
CONSENT_NO_PHRASES = [
|
||||
"нет", "no", "не согласен", "отказываюсь", "не даю согласие",
|
||||
"нет, не согласен", "не хочу давать согласие", "отказ"
|
||||
]
|
||||
|
||||
CONFIRM_MESSAGE = (
|
||||
"Проверьте данные:\n"
|
||||
"ФИ: {fio}\n"
|
||||
"Телефон: {phone}\n"
|
||||
"Время звонка по МСК: {time}\n"
|
||||
"{parent_info}"
|
||||
"Всё верно? (Да / Нет)"
|
||||
)
|
||||
|
||||
CONFIRM_YES = "Спасибо! Ваши данные сохранены. Менеджер свяжется с вами в указанное время. Хорошего дня! 🌟"
|
||||
CONFIRM_NO = "Давайте начнём заново. " + GREETING
|
||||
|
||||
OBJECTION_NOT_NOW = (
|
||||
"Понимаю, возможно сейчас неудобно. Я оставлю заявку в статусе 'отложено'. "
|
||||
"Напишите 'начать заново', когда будете готовы продолжить."
|
||||
)
|
||||
OBJECTION_THINK = (
|
||||
"Хорошо, подумайте. Я сохраню текущие данные. Для продолжения напишите 'продолжить'."
|
||||
)
|
||||
OBJECTION_NO_PHONE = (
|
||||
"К сожалению, без номера телефона мы не сможем с вами связаться. "
|
||||
"Если передумаете – напишите 'начать заново'."
|
||||
)
|
||||
|
||||
# Кнопки
|
||||
BUTTON_YES = "✅ Да"
|
||||
BUTTON_NO = "❌ Нет"
|
||||
BUTTON_RESTART = "🔄 Начать заново"
|
||||
BUTTON_CONTINUE = "➡️ Продолжить"
|
||||
|
||||
# Команды
|
||||
CMD_START = "/start"
|
||||
CMD_STATUS = "/status"
|
||||
CMD_EXPORT = "/export"
|
||||
CMD_BACKUP = "/backup"
|
||||
CMD_STATS = "/stats"
|
||||
CMD_RELOAD = "/reload"
|
||||
@@ -0,0 +1,25 @@
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
from pathlib import Path
|
||||
|
||||
load_dotenv()
|
||||
|
||||
BASE_DIR = Path(__file__).parent.parent
|
||||
|
||||
VK_GROUP_ID = int(os.getenv("VK_GROUP_ID"))
|
||||
VK_TOKEN = os.getenv("VK_TOKEN")
|
||||
ADMIN_IDS = [int(x.strip()) for x in os.getenv("ADMIN_IDS", "").split(",") if x.strip()]
|
||||
|
||||
DATA_DIR = Path(os.getenv("DATA_DIR", BASE_DIR / "data"))
|
||||
LEADS_FILE = Path(os.getenv("LEADS_FILE", DATA_DIR / "leads.xlsx"))
|
||||
BACKUP_DIR = Path(os.getenv("BACKUP_DIR", DATA_DIR / "backups"))
|
||||
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
|
||||
TIMEZONE = os.getenv("TIMEZONE", "Europe/Moscow")
|
||||
|
||||
# Создаём директории
|
||||
DATA_DIR.mkdir(exist_ok=True)
|
||||
BACKUP_DIR.mkdir(exist_ok=True)
|
||||
|
||||
# Настройки валидации
|
||||
PHONE_MASK = "+7 (___) ___-__-__"
|
||||
PHONE_LENGTH = 11 # цифр после +7
|
||||
Reference in New Issue
Block a user