from app.settings_cache import SettingsCache def build_main_menu_buttons() -> list: buttons = [] row = [ {"type": "message", "text": "📋 Оставить заявку", "payload": "new_inquiry"}, {"type": "message", "text": "📞 Связаться с оператором", "payload": "handoff"}, ] buttons.append(row) features = SettingsCache.get_enabled_features() feature_buttons = [] feature_map = { "risk_score": ("📊 Risk Score", "feature_risk_score"), "sla_status": ("🔍 SLA статус", "feature_sla_status"), "photo_report": ("📸 Фото-отчёт", "feature_photo_report"), "appointment": ("📅 Запись на визит", "feature_appointment"), "quality_rate": ("⭐ Оценка качества", "feature_quality_rate"), "commercial_offer": ("📄 Коммерческое предложение", "feature_commercial"), "my_objects": ("🏢 Мои объекты", "feature_my_objects"), "reminders": ("🔔 Напоминания", "feature_reminders"), "notifications": ("🔔 Уведомления", "feature_notifications"), "broadcasts": ("📢 Рассылки", "feature_broadcast"), } for key, (label, payload) in feature_map.items(): if key in features: feature_buttons.append({"type": "message", "text": label, "payload": payload}) while feature_buttons: buttons.append(feature_buttons[:2]) feature_buttons = feature_buttons[2:] row = [{"type": "message", "text": "❓ Задать вопрос", "payload": "kb_search"}] buttons.append(row) return buttons def build_consent_buttons() -> list: return [[ {"type": "message", "text": "✅ Даю согласие", "payload": "consent_given"}, ], [ {"type": "message", "text": "❌ Не даю согласие", "payload": "consent_refused"}, ]] def build_contact_buttons() -> list: return [[ {"type": "request_contact", "text": "📱 Поделиться контактом"}, ]] def build_category_buttons() -> list: categories = SettingsCache.get_categories() buttons = [] row = [] for cat in categories: row.append({"type": "message", "text": f"{cat.icon_emoji} {cat.name}", "payload": f"cat_{cat.id}"}) if len(row) >= 2: buttons.append(row) row = [] if row: buttons.append(row) return buttons def build_quality_buttons() -> list: return [[ {"type": "callback", "text": "⭐", "payload": "rate_1"}, {"type": "callback", "text": "⭐⭐", "payload": "rate_2"}, {"type": "callback", "text": "⭐⭐⭐", "payload": "rate_3"}, ], [ {"type": "callback", "text": "⭐⭐⭐⭐", "payload": "rate_4"}, {"type": "callback", "text": "⭐⭐⭐⭐⭐", "payload": "rate_5"}, ]] def build_cancel_button() -> list: return [[{"type": "message", "text": "↩️ Отмена", "payload": "cancel"}]] def build_phone_email_buttons(phone_1: str, phone_2: str, email: str, subject: str) -> list: from urllib.parse import quote buttons = [ [{"type": "link", "text": f"📞 {phone_1}", "url": f"tel:{phone_1.replace(' ', '').replace('-', '').replace('(', '').replace(')', '')}"}], [{"type": "link", "text": f"📞 {phone_2}", "url": f"tel:{phone_2.replace(' ', '').replace('-', '').replace('(', '').replace(')', '')}"}], [{"type": "link", "text": f"✉️ {email}", "url": f"mailto:{email}?subject={quote(subject)}"}], ] return buttons