""" Форматирование сообщений """ import json from typing import List, Dict, Any from database.models import User def format_phone_list(services: List[Dict[str, Any]]) -> str: """Форматировать список телефонов""" if not services: return '📭 Список пуст' lines = [] for svc in services: emoji = get_service_emoji(svc.get('category', '')) name = svc.get('name', 'Неизвестно') phone = svc.get('phone', '') desc = svc.get('description', '') rating = svc.get('rating') line = f'{emoji} {name}: {phone}' if desc: line += f'\n └─ {desc}' if rating: line += f' ⭐ {rating}' lines.append(line) return '\n\n'.join(lines) def get_service_emoji(category: str) -> str: """Эмодзи для категории службы""" emojis = { 'emergency': '🚨', 'utility': '🔧', 'police': '👮', 'masters': '👷', 'plumber': '🚿', 'electrician': '⚡', } return emojis.get(category, '📞') def format_user_info(user: User) -> str: """Форматировать информацию о пользователе""" status = '✅' if user.verified else '⏳' spy_status = get_spy_status(user.spy_score) text = f'''{status} {user.full_name} ├─ ID: {user.user_id} ├─ Ник: @{user.username or 'нет'} ├─ Квартира: {user.apartment or 'не указана'} ├─ Сообщений: {user.message_count} ├─ В чате с: {user.join_date.strftime('%d.%m.%Y')} └─ Статус: {spy_status}''' return text def get_spy_status(score: int) -> str: """Статус детекта шпиона""" if score <= 30: return '🟢 В норме' elif score <= 60: return '🟡 Подозрительно' else: return '🔴 ШПИОН!' def format_stats(stats: Dict[str, Any]) -> str: """Форматировать статистику чата""" text = f'''📊 Статистика чата 👥 Пользователи: ├─ Всего: {stats.get('total_users', 0)} ├─ Верифицированы: {stats.get('verified_users', 0)} └─ Непроверены: {stats.get('unverified_users', 0)} 📝 Сообщения: ├─ Всего: {stats.get('total_messages', 0)} ├─ За неделю: {stats.get('messages_week', 0)} └─ За день: {stats.get('messages_day', 0)} 🕵️ Безопасность: ├─ Подозрительных: {stats.get('suspicious_count', 0)} └─ Шпионов: {stats.get('spies_count', 0)} 📈 Активность: └─ Топ за неделю: {stats.get('top_users', 'нет данных')}''' return text def format_spy_alert(user: User, flags: List[str]) -> str: """Форматировать предупреждение о шпионе""" flag_emojis = { 'new_account': '🆕', 'no_avatar': '👤', 'generic_username': '🔤', 'unverified': '⏳', 'provocation': '💬', 'office_hours': '🕐', 'multicount': '🔄', 'complaints': '⚠️' } flags_text = '\n'.join([f'{flag_emojis.get(f, "•")} {f}' for f in flags]) return f'''🚨 ТРЕВОГА: Возможный шпион! {format_user_info(user)} 📋 Флаги: {flags_text} 💡 Рекомендация: Проверить и запросить верификацию'''