"""
Форматирование сообщений
"""
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}
💡 Рекомендация: Проверить и запросить верификацию'''