5.8 KiB
5.8 KiB
Система Нативных Чатов - Документация
Обзор
Новая система нативных чатов обеспечивает более естественное взаимодействие пользователей в Telegram, заменяя сложные кнопочные интерфейсы на прямые сообщения.
Ключевые особенности
1. Нативный интерфейс чатов
- Простой список чатов без лишних кнопок
- Прямые сообщения - пользователи могут просто печатать и отправлять
- Контекстное понимание - бот автоматически определяет в каком чате находится пользователь
2. Автоматические уведомления
- Мгновенные push-уведомления о новых сообщениях
- Умные уведомления - не спамят, отправляются только при необходимости
- Персонализированные сообщения с именем отправителя
3. Контекстная система
- 30-минутное окно контекста - бот помнит в каком чате пользователь
- Автоматическое переключение между чатами
- Graceful timeout - контекст сбрасывается через 30 минут неактивности
Архитектура
EnhancedChatHandlers
Основной класс для обработки нативных чатов:
- showChatsNative() - показывает список чатов
- openNativeChat() - открывает конкретный чат
- handleIncomingChatMessage() - обрабатывает входящие сообщения
- sendMessageNotification() - отправляет уведомления
- showChatHistory() - показывает историю сообщений
Интеграция с MessageHandlers
- Автоматическое перехватывание сообщений
- Проверка контекста чата перед обработкой
- Fallback на стандартную обработку если не в чате
Callback Integration
Новые callback handlers:
native_chats- открывает нативный интерфейс чатовopen_native_chat_<matchId>- открывает конкретный чатchat_history_<matchId>- показывает историю
Пользовательский опыт
Старый способ (сложный)
- Нажать "Открыть чаты"
- Выбрать чат из списка
- Нажать "Отправить сообщение"
- Написать сообщение
- Подтвердить отправку
Новый способ (нативный)
- Нажать "Нативные чаты"
- Выбрать чат
- Просто написать сообщение и отправить
- Получить автоматическое уведомление об ответе
Технические детали
Хранение контекста
private activeChatContexts: Map<number, {
matchId: string;
partnerId: number;
lastActivity: Date;
}> = new Map();
Уведомления
- Проверка активности получателя
- Избежание дублирования уведомлений
- Персонализированные сообщения
База данных
- Используется существующая структура messages
- Автоматическое сохранение всех сообщений
- Совместимость со старой системой
Преимущества
- Интуитивность - привычный интерфейс Telegram
- Скорость - меньше кликов для отправки сообщения
- Уведомления - пользователи не пропустят сообщения
- Контекст - бот понимает в каком чате находится пользователь
- Совместимость - работает параллельно со старой системой
Настройки
Timeout контекста
По умолчанию: 30 минут
Можно изменить в константе CHAT_CONTEXT_TIMEOUT_MS
Уведомления
Автоматически отправляются при:
- Получении нового сообщения
- Если получатель не в активном чате
- Если прошло достаточно времени с последнего уведомления
Безопасность
- Проверка существования матча перед отправкой
- Валидация прав доступа к чату
- Защита от спама уведомлениями
- Автоматическая очистка неактивных контекстов
Миграция
Система полностью обратно совместима:
- Старые чаты продолжают работать
- Новые пользователи автоматически используют нативный интерфейс
- Постепенная миграция существующих пользователей
Мониторинг
Логирование всех ключевых событий:
- Отправка сообщений
- Переключение контекста
- Отправка уведомлений
- Ошибки и исключения