1.0.9 • Published 5 months ago

@dieugene/kak-dela-bot-public v1.0.9

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

🤖 Telegram Bot Template "Как дела?"

Расширенный шаблон для создания Telegram-ботов с ИИ-возможностями, продвинутым управлением пользователями и системой автоматических уведомлений. Основан на симуляции социальной сети с функциями диалогового ИИ, управления событиями и аналитики.

📋 Описание проекта

Это комплексная система, включающая в себя:

🏗️ Архитектура основных модулей

1. Telegram Bot Engine (index.js)

  • Полнофункциональный Telegram-бот на базе Telegraf
  • Обработка всех типов сообщений (текст, голос, файлы, фото, контакты)
  • Система callback-запросов для интерактивных кнопок
  • Реферальная система и приглашения
  • Команды: /start, /help, /clear_sessions, /invite, /show_files

2. Система диалогов (dialog.js)

  • Интеграция с @dialogai/dialog-class для ИИ-диалогов
  • Поддержка Zod-схем для структурированного ИИ-вывода
  • Автоматическое резюмирование длинных диалогов
  • Настраиваемые ИИ-ассистенты с различными ролями

3. Управление пользователями (user-list.js)

  • Централизованная база пользователей с настройками
  • Система уведомлений (ежедневные/еженедельные)
  • Отслеживание активности и пропущенных уведомлений
  • Персональные настройки частоты дайджестов

4. Система уведомлений (timer-handlers.js)

  • Автоматические проактивные запросы статуса
  • Логика повторных попыток для неактивных пользователей
  • Удаление неотвеченных сообщений
  • Настраиваемые интервалы уведомлений

5. Управление файлами (file-manager.js)

  • Загрузка и обработка документов пользователей
  • Интеграция с системой callback для управления файлами
  • Поддержка различных типов файлов (CV, документы)
  • Возможность удаления файлов

6. Система событий (observers.js)

  • Паттерн Observer для обработки событий
  • Асинхронная обработка событий (поделиться телефоном, загрузка файлов)
  • Расширяемая архитектура для новых типов событий

7. Утилиты и хелперы (bot_utils.js)

  • Обработка callback-запросов
  • Отправка сложных ответов с кнопками
  • Система post-сообщений
  • Обработка файлов и медиа
  • Централизованное логирование ошибок

8. Онбординг (onboarding.js)

  • Система приветствия новых пользователей
  • Обучающие материалы и ссылки
  • Адаптивные сценарии в зависимости от типа пользователя

9. Шина новостей (news-bus.js)

  • Централизованное хранилище обновлений пользователей с TTL
  • Фильтрация новостей по подпискам и времени
  • Автоматическая очистка устаревших записей
  • Изоляция данных через отдельный домен

10. ИИ-анализ диалогов (analysis.js)

  • Структурированный анализ диалогов с помощью Zod-схем
  • Извлечение новостей и семантическое сравнение содержания
  • Обогащение диалогов метаданными (темы, настроение, ключевые упоминания)
  • Создание резюме и извлечение тематик

🔧 Зависимости и технологии

Основные фреймворки:

  • Telegraf - фреймворк для Telegram-ботов
  • @dialogai/dialog-class - ИИ-диалоги с поддержкой различных LLM
  • @dialogai/user-controller - управление пользователями
  • Zod - валидация схем для структурированного ИИ-вывода

Внешние сервисы:

  • @dieugene/* - внутренние модули экосистемы:
    • key-object-db - база данных ключ-значение
    • sessions - управление сессиями
    • callbacks - система callback
    • social-graph - реферальная система
    • tg-messages-cache - кеширование сообщений
    • logger - централизованное логирование
    • utils - набор утилит
    • voicer - распознавание голоса
    • ydb - работа с YandexDB

ИИ и аналитика:

  • @langchain/* - интеграция с LangChain для ИИ
  • Fuse.js - нечеткий поиск

📋 Обзор функциональности

Для пользователей:

  • Ведение персональных диалогов с ИИ-ассистентом
  • Автоматические уведомления о важных событиях
  • Загрузка и управление файлами
  • Реферальная система для приглашения друзей
  • Настройка частоты уведомлений и дайджестов

Для разработчиков:

  • Готовая архитектура для масштабируемых ботов
  • Система управления пользователями из коробки
  • Интеграция с ИИ-сервисами
  • Extensible event system
  • Детальное логирование и аналитика
  • Унифицированная система доменов и стандартизированное логирование
  • Полная миграция возможностей из симуляции в реальный бот

📚 Для разработчиков: Обязательно изучите DEVELOPMENT_LOG.md для понимания критических исправлений и контекста разработки!

🏗️ Архитектура системы

Схема компонентов Telegram Bot

┌─────────────────────────────────────────────────────────────────┐
│                      TELEGRAM BOT CORE                         │
├─────────────────┬───────────────────┬─────────────────────────┤
│   index.js      │    dialog.js      │     bot_utils.js        │
│                 │                   │                         │
│ • Telegraf Bot  │ • Dialog Class    │ • Callback Handlers     │
│ • Route Handler │ • AI Integration  │ • Message Processing    │
│ • Commands      │ • Zod Schemas     │ • File Operations       │
│ • Events        │ • Summary Logic   │ • Error Handling        │
└─────────────────┴───────────────────┴─────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                      USER MANAGEMENT                           │
├─────────────────┬───────────────────┬─────────────────────────┤
│  user-list.js   │timer-handlers.js  │    onboarding.js        │
│                 │                   │                         │
│ • User Database │ • Notifications   │ • Welcome Messages      │
│ • Settings      │ • Reminders       │ • Help System           │
│ • Activity      │ • Cleanup Logic   │ • User Guidance         │
│ • Preferences   │ • Retry Logic     │ • Resource Links        │
└─────────────────┴───────────────────┴─────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                    EXTENSIONS & UTILS                          │
├─────────────────┬───────────────────┬─────────────────────────┤
│file-manager.js  │   observers.js    │    External Services    │
│                 │                   │                         │
│ • File Upload   │ • Event System    │ • @dialogai/***         │
│ • File Storage  │ • Async Handlers  │ • @dieugene/***         │
│ • File Management│ • Observer Pattern│ • @langchain/***        │
│ • Callback System│ • Event Emission  │ • Zod Validation        │
└─────────────────┴───────────────────┴─────────────────────────┘

Поток данных в боте

  1. Telegram Messageindex.js → обработка типа сообщения
  2. User Authenticationuser-list.js → управление пользователем
  3. Dialog Processingdialog.js → ИИ-обработка + bot_utils.js
  4. Response Generation → форматирование + отправка ответа
  5. Event Loggingobservers.js → обработка событий
  6. Scheduled Taskstimer-handlers.js → автоматические уведомления

Архитектура системы симуляции

Дополнительно система включает продвинутую симуляцию социальной сети:

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│     Avatar      │    │   UserAgent     │    │    DataBus      │
│                 │    │                 │    │                 │
│ - update_myself │    │ - generateResp  │    │ - add/get       │
│ - read_updates  │    │ - analyzeType   │    │ - event storage │
│ - subscriptions │    │ - personality   │    │                 │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│    Scheduler    │    │    Reporter     │    │    Producer     │
│                 │    │                 │    │                 │
│ - invoke_avatar │    │ - reportDialog  │    │ - start/grow    │
│ - day_counter   │    │ - generatePDF   │    │ - subscriptions │
│ - time_control  │    │ - statistics    │    │ - random_users  │
└─────────────────┘    └─────────────────┘    └─────────────────┘

🚀 Быстрый старт

Предварительные требования

# Node.js 16+
node --version

# Проверка доступности npm
npm --version

Установка

  1. Клонируйте репозиторий
git clone <repository-url>
cd kak-dela-bot
  1. Установите зависимости
npm install
  1. Настройте переменные окружения
# Создайте .env файл с необходимыми ключами:
KAK_DELA_BOT_TOKEN=your_telegram_bot_token
OPENAI_API_KEY=your_openai_key
# Дополнительные ключи для внешних сервисов

Варианты запуска

1. Telegram Bot (Production)

# Основной бот-сервер
node index.js

2. Симуляция социальной сети (Testing)

# Запуск полной симуляции
node test-bot-simulation.js

# Другие тестовые модули
node test-optimized-implementation.js
node test-enhanced-report.js

3. Запуск таймера уведомлений

# Для автоматических уведомлений (обычно в cron)
node -e "require('./timer-handlers.js').invoke()"

Конфигурация

В package.json настройте:

  • name - имя вашего бота
  • description - описание проекта
  • main - точка входа (index.js для продакшена)

В коде настройте:

  • bot_domain = 'KAK-DELA-BOT' во всех основных модулях (унифицировано)
  • bot_domain = 'KAK-DELA-BOT-NEWS-BUS' в news-bus.js (для изоляции данных)
  • Параметры ИИ-моделей в dialog.js
  • Интервалы уведомлений в timer-handlers.js

⚠️ Важно: Используйте единый домен 'KAK-DELA-BOT' для всех основных модулей. Специализированные домены оставляйте только для изоляции данных.

📖 Подробное описание компонентов

1. 🤖 index.js - Главный модуль Telegram-бота

Основа всей системы - полнофункциональный Telegram-бот.

Ключевые функции:

// Инициализация бота
function initBot(botToken) {
    const bot = new Telegraf(botToken, {
        handlerTimeout: Number.POSITIVE_INFINITY
    });
    // Настройка обработчиков...
}

// Обработка пользовательских сообщений
async function process_user_message(ctx, data, bot_token) {
    // 1. Получение диалога для пользователя
    // 2. Обработка кеша сообщений
    // 3. Запуск ИИ-диалога
    // 4. Отправка ответа
}

Поддерживаемые команды:

  • /start - регистрация пользователя + реферальная система
  • /help - справочная информация
  • /clear_sessions - очистка истории диалогов
  • /invite - получение реферальной ссылки
  • /show_files - просмотр загруженных файлов

Обработка событий:

  • Текстовые сообщения → обработка через ИИ
  • Голосовые сообщения → распознавание + обработка
  • Документы → загрузка и сохранение
  • Фотографии → обработка медиа
  • Контакты → сохранение информации
  • Callback-запросы → выполнение действий

2. 💬 dialog.js - Система ИИ-диалогов

Интеграция с Dialog Class для создания интеллектуальных бесед.

Основные возможности:

// Построение диалога для пользователя
function buildDialog(user_uuid) {
    let dialog = new Dialog({
        alias: 'Нетворкинг-ассистент',
        dialog_code: bot_domain,
        start_system_msg: ``
    });
    dialog.summary_config.threshold = 20;
    dialog.summary_config.limit = 15;
    return dialog;
}

Функции:

  • Автоматическое резюмирование - когда диалог превышает порог
  • Поддержка Zod-схем - для структурированного ИИ-вывода
  • Настраиваемые роли - различные типы ассистентов
  • Управление сессиями - привязка к пользователю

3. 👥 user-list.js - Управление пользователями

Централизованная система управления всеми пользователями бота.

Класс UserList:

// Добавление нового пользователя
async addUser(user_uuid, user_data) {
    // Проверка существования в основной системе
    // Настройка уведомлений по умолчанию
    // Сохранение в базе
}

// Получение пользователей для уведомлений
async getUsersForNotification() {
    // Фильтрация по времени последнего уведомления
    // Учет настроек частоты
}

Отслеживаемые данные:

  • telegram_id - ID пользователя в Telegram
  • added_at - время регистрации
  • last_activity - последняя активность
  • last_notification - время последнего уведомления
  • missed_notifications - количество пропущенных
  • settings - персональные настройки

4. ⏰ timer-handlers.js - Система уведомлений

Автоматические проактивные уведомления пользователей.

Логика работы:

// Основной цикл обработки
async function invoke() {
    const allUsers = await userList.getAllUsers();
    for (let user of allUsers) {
        // Проверка статуса уведомлений
        // Логика повторных попыток
        // Отправка новых уведомлений
    }
}

Алгоритм уведомлений:

  1. Проверка ответа на предыдущее уведомление
  2. Удаление неотвеченных сообщений в конце дня
  3. Повторные попытки для неактивных (максимум 2)
  4. Сброс счетчика при получении ответа
  5. Отправка новых по расписанию

5. 📁 file-manager.js - Управление файлами

Система загрузки и обработки пользовательских файлов.

Возможности:

// Получение файлов пользователя
function get_user_files(user_data) {
    return user_data.files || [];
}

// Создание сообщения с файлом
function to_message(file_data, user_uuid) {
    return {
        text: stringify_file_data(file_data),
        markup_data: 'Удалить::' + callback_id
    };
}

Поддерживаемые операции:

  • Загрузка документов - автоматическая обработка
  • Классификация типов - CV, документы, др.
  • Управление файлами - просмотр, удаление
  • Интеграция с callback - интерактивные кнопки

6. 🔔 observers.js - Система событий

Реализация паттерна Observer для обработки событий.

Класс Observer:

// Подписка на событие
on(event_name, func) {
    // Добавление обработчика в карту
}

// Генерация события
async emit(event_name, ...args) {
    // Асинхронный вызов всех обработчиков
}

Примеры событий:

  • phone_shared - пользователь поделился номером
  • file_uploaded - загрузка файла
  • dialog_completed - завершение диалога

7. 🛠️ bot_utils.js - Утилиты и хелперы

Вспомогательные функции для обработки различных аспектов бота.

Основные функции:

// Отправка результатов диалога
async function send_dialog_results(ctx, dialog, placeholder_message_id) {
    // Обработка ответа ИИ
    // Форматирование сообщений  
    // Отправка с кнопками
    // Завершение сессии
}

// Выполнение callback-запросов
async function execute_callback(ctx, callback_rec_id, bot_token, callback_query_id) {
    // Получение обработчика
    // Выполнение действия
    // Подтверждение callback
}

Дополнительные возможности:

  • Обработка post-сообщений - отложенные сообщения
  • Работа с файлами - интеграция с file-manager
  • Централизованное логирование - обработка ошибок
  • Реферальная система - обработка приглашений

8. 🎯 onboarding.js - Онбординг пользователей

Система приветствия и обучения новых пользователей.

Компоненты:

// Отправка приветственного сообщения
async function sendOnboardingMessage(ctx) {
    // Персонализированное приветствие
    // Обучающие материалы
    // Настройка предпочтений
}

Ресурсы:

  • Справочные материалы - ссылки на документацию
  • Примеры использования - практические кейсы
  • Поддержка пользователей - контакты для помощи
  • Правовая информация - условия использования

🎯 Использование как шаблон для создания ботов

Быстрое создание бота на основе шаблона

1. Настройка под свой проект

// ✅ Используйте единый домен для всех основных модулей:
const bot_domain = 'YOUR-BOT-NAME';  // Замените на имя вашего бота

// ⚠️ ВАЖНО: Специализированные домены (если нужны):
const bot_domain = 'YOUR-BOT-NAME-NEWS-BUS';  // Только для news-bus.js

// В package.json обновите:
{
    "name": "@yourname/your-bot-name",
    "description": "Описание вашего бота"
}

🔧 Стандарт домена: Все основные модули должны использовать одинаковый bot_domain. Специализированные домены используйте только для изоляции данных (как в news-bus.js).

2. Кастомизация диалога (dialog.js)

function buildDialog(user_uuid) {
    let dialog = new Dialog({
        alias: 'Ваш Ассистент',  // Имя вашего бота
        dialog_code: bot_domain,
        start_system_msg: `Вы - полезный ассистент...` // Ваша роль
    });
    
    // Настройки резюмирования под вашу задачу
    dialog.summary_config.threshold = 30;  // Больше для длинных диалогов
    dialog.summary_config.limit = 20;
    
    return dialog;
}

3. Настройка команд (index.js)

// Измените приветственное сообщение
bot.start(async ctx => {
    // Ваша логика приветствия
    await ctx.reply("Добро пожаловать в [Название бота]!");
});

// Добавьте свои команды
bot.command('your_command', async ctx => {
    // Ваша логика
});

4. Адаптация системы уведомлений

// В timer-handlers.js настройте сообщения:
async function sendStatusRequest(user) {
    const message = await dialog
        .invoke_with_instruction(`Ваша инструкция для бота`);
    // ...
}

Готовые компоненты для переиспользования

Что готово к использованию:

  1. Полная система управления пользователями

    • Регистрация и аутентификация
    • Персональные настройки
    • История активности
  2. ИИ-диалоги из коробки

    • Интеграция с различными LLM
    • Автоматическое резюмирование
    • Структурированный вывод через Zod
  3. Система уведомлений

    • Проактивные сообщения
    • Настраиваемые интервалы
    • Логика повторных попыток
  4. Файловый менеджер

    • Загрузка документов
    • Классификация типов
    • Управление через callback
  5. Система событий

    • Observer pattern
    • Расширяемая архитектура
    • Асинхронная обработка

🔧 Что нужно настроить:

  1. Роль и личность бота - dialog.js
  2. Команды и обработчики - index.js
  3. Тексты уведомлений - timer-handlers.js
  4. Онбординг пользователей - onboarding.js
  5. Единый bot_domain - во всех основных модулях (критически важно!)
  6. Правила логирования - замените logger.send на console.log с JSON.stringify

Примеры применения шаблона

📋 Task Management Bot

// Роль: Ассистент по управлению задачами
start_system_msg: `Вы - персональный ассистент по управлению задачами. 
Помогаете планировать дела, отслеживать прогресс, напоминать о дедлайнах.`

// Уведомления: ежедневные напоминания о задачах

🏃 Fitness Coaching Bot

// Роль: Фитнес-тренер
start_system_msg: `Вы - персональный фитнес-тренер. 
Создаете программы тренировок, следите за прогрессом, мотивируете.`

// Уведомления: напоминания о тренировках

📚 Learning Assistant Bot

// Роль: Обучающий ассистент  
start_system_msg: `Вы - персональный преподаватель.
Помогаете изучать материал, проверяете знания, даете советы по обучению.`

// Файлы: обработка учебных материалов

Шаблоны для различных индустрий

🏥 Healthcare Assistant

  • Напоминания о приеме лекарств
  • Отслеживание симптомов
  • Ведение медицинского дневника

💼 Business Consultant

  • Ежедневные check-in с командой
  • Отслеживание KPI
  • Анализ бизнес-процессов

🎨 Creative Assistant

  • Генерация идей
  • Отслеживание креативных проектов
  • Inspiration reminders

📊 Мониторинг и аналитика

Встроенные метрики

Пользовательская активность:

// В user-list.js отслеживается:
- last_activity: timestamp последней активности
- missed_notifications: пропущенные уведомления  
- settings: персональные настройки

Качество диалогов:

// В dialog.js логируется:
- Длина диалогов
- Частота резюмирования
- Использование structured output

Кастомные метрики

// Добавьте в observers.js:
observers.on('dialog_completed', async (ctx, dialog_result) => {
    // Ваша аналитика
    await analytics.track('dialog_completed', {
        user_id: ctx.from.id,
        dialog_length: dialog_result.messages.length,
        satisfaction: dialog_result.rating
    });
});

🔒 Безопасность и приватность

Рекомендации по безопасности:

  1. Переменные окружения
# Никогда не коммитьте в git:
KAK_DELA_BOT_TOKEN=your_secret_token
OPENAI_API_KEY=your_secret_key
  1. Валидация данных
// Всегда валидируйте пользовательский ввод
const userInput = ctx.message.text;
if (!userInput || userInput.length > 1000) {
    return await ctx.reply("Некорректный ввод");
}
  1. Ограничение доступа
// Добавьте проверки доступа:
if (!await userList.hasUser(user_uuid)) {
    return await ctx.reply("Доступ запрещен");
}

Соответствие GDPR:

  • Данные хранятся с согласия пользователя
  • Команда /clear_sessions для удаления данных
  • Логирование доступа к личным данным

📚 Дополнительная документация

Важные файлы для изучения:

  1. DEVELOPMENT_LOG.md - история разработки и исправления
  2. test-bot-simulation.js - полный пример использования системы симуляции
  3. package.json - список всех зависимостей

Полезные ссылки:


🤝 Вклад в проект

Если вы используете этот шаблон и создаете улучшения:

  1. Fork репозитория
  2. Создайте feature branch
  3. Добавьте тесты для новой функциональности
  4. Обновите документацию
  5. Создайте Pull Request

Области для улучшений:

  • 🔄 Система миграций для баз данных
  • 📈 Расширенная аналитика и метрики
  • 🌐 Мультиязычная поддержка
  • 🔌 Дополнительные интеграции (календари, CRM)
  • 🎨 UI для администрирования

🏷️ Лицензия

ISC License - см. package.json для деталей.

Автор: Eugene Ditkovsky
Версия: 1.0.6
Поддержка: @netto_chat_support


💡 Совет: Начните с изучения test-bot-simulation.js для понимания всех возможностей системы, затем адаптируйте index.js под свои потребности.

6. 🏭 Producer - Управление симуляцией

Создание и настройка всей экосистемы.

Функции:

  • Создание стартовых аватаров
  • Генерация случайных связей между пользователями
  • Очистка сессий диалогов
  • Расширение сети (добавление новых пользователей)

⚙️ Конфигурация

Типичные настройки:

// Количество дней симуляции
const MAX_DAYS = 5;

// Количество аватаров
const MAX_AVATARS = 5;

// Вероятность активности
avatar.activity_probability = 0.8;

// Максимум итераций диалога  
const MAX_ITERATIONS = 5;

Настройка личностей:

const personalityData = {
    name: "Анна Смирнова",
    age: 28,
    occupation: "графический дизайнер",
    personality_traits: ["творческая", "эмоциональная"],
    current_life_context: {
        mood: "вдохновленная",
        recent_events: "получила повышение",
        daily_routine: "работает удаленно"
    },
    communication_style: "открытая и эмоциональная",
    interests: ["искусство", "мода", "путешествия"]
};

🎮 Использование

Базовый запуск:

// Запуск стандартной симуляции
Producer.start();

Кастомизация:

// Создание собственного аватара
const customAvatar = new Avatar(personalityData, "custom-uuid");
Avatar.reg_avatar(customAvatar);

// Добавление подписок
customAvatar.add_subscription(new Subscription({
    target_uuid: "friend-uuid",
    attention_rate: 0.9,
    preferred_topics: ["работа", "технологии"]
}));

// Запуск на определенное количество дней
Scheduler.invoke(10);

Анализ результатов:

// Получение отчета по аватару
const report = Reporter.getAvatarReport("avatar-uuid");

// Статистика по дню
const dayStats = Reporter.getDayStats(1);

// Генерация PDF
const pdfResult = await Reporter.generatePDFReport();
console.log("PDF URL:", pdfResult.downloadURI);

🔧 Отладка и мониторинг

Логирование:

Система использует многоуровневое логирование:

// Консольные сообщения с цветовой кодировкой
console.log('%cБот:', 'color: yellow;', message);
console.log('%cПользователь:', 'color: green;', message);

// Структурированные отчеты
Reporter.reportDialogResult(uuid, name, result);
Reporter.reportFriendsUpdates(uuid, name, updates);

Типичные проблемы:

  1. Однообразные приветствия - проверьте generateGreetingInstruction()
  2. Фантазии о друзьях - убедитесь в работе системных ограничений
  3. Пустые диалоги - проверьте настройки личностей
  4. Ошибки API - проверьте ключи в .env

📋 API внешних сервисов

PDF генерация:

const endpoint = 'https://functions.yandexcloud.net/d4euaadkp8baaol6u7gc';
const template = "https://storage.yandexcloud.net/grantbase/report-template.docx";

ИИ-модели:

  • Claude 3.5 Sonnet для бота и анализа
  • @dialogai/dialog-class для управления диалогами
  • @dialogai/user-controller для пользователей

🚨 Критически важные моменты

⚠️ НЕ ИЗМЕНЯЙТЕ без понимания:

1. Массив приветствий в generateGreetingInstruction()

// КРИТИЧЕСКИ ВАЖНО: Каждая фраза тщательно подобрана для естественности
// НЕ заменять на общие инструкции типа "Поздоровайся и спроси как дела"
const greetingStyles = [
    "Поздоровайся фразой: 'Здравствуй! Давно не общались, интересно, что у тебя происходит...'",
    "Скажи: 'Привет! Хотелось бы услышать, что нового в твоих делах'",
    "Начни так: 'Добрый день! Интересно узнать, над чем ты сейчас работаешь'",
    "Поприветствуй словами: 'Здравствуй! Расскажи, чем живешь в последнее время'",
    "Скажи: 'Привет! Поделись новостями, это всегда интересно узнать'"
];

2. Системное правило против фантазий

// Это правило предотвращает критическую ошибку - фантазии о друзьях
ВАЖНО: НЕ упоминай никаких друзей или знакомых пользователя. НЕ говори о том, что у тебя есть новости о ком-то. Сосредоточься ТОЛЬКО на самом пользователе.

3. Строгие проверки в extractFriendNews

// Защита от пустых диалогов и фантазий
if (!dialogText || dialogText.trim().length < 20) {
    return null;
}

// Строгая инструкция для ИИ
const instruction = `
СТРОГО анализируй ТОЛЬКО представленный диалог. НЕ додумывай и НЕ фантазируй.
СТРОГИЕ ПРАВИЛА:
- Используй ТОЛЬКО информацию из диалога
- НЕ додумывай детали
- НЕ интерпретируй то, что не сказано прямо
`;

4. Структуру Reporter'а - используется для внешней генерации PDF

🛡️ Критические исправления в коде

Проблема: Бот всегда говорил одинаковые приветствия ("Привет! Как дела на работе?") Решение: Замена общих инструкций на конкретные фразы в generateGreetingInstruction()

Проблема: Бот придумывал несуществующих друзей и их новости Решение: Многоуровневая защита:

  • Запрет в системном сообщении
  • Строгие проверки в extractFriendNews
  • Валидация длины диалогов
  • Четкие инструкции против фантазий

🔒 Безопасность:

  • Все ключи API должны быть в .env
  • Ограничения на количество запросов к ИИ
  • Валидация всех входных данных
  • Логирование для аудита

📈 Метрики качества

Ключевые индикаторы:

  • Вариативность приветствий > 80%
  • Отсутствие фантазийных новостей = 100%
  • Естественность диалогов (субъективная оценка)
  • Покрытие тестами основных сценариев

Мониторинг:

// Проверка разнообразия приветствий
const uniqueGreetings = new Set(dialogLogs.map(d => d.firstMessage));
const variety = uniqueGreetings.size / dialogLogs.length;

// Проверка фантазий
const hasFantasyNews = newsLogs.some(n => !n.basedOnRealDialog);

🚀 Развитие

Текущие возможности:

  • ✅ Эмуляция 10 различных личностей
  • ✅ 5 стилей приветствий
  • ✅ Анализ 3 типов вопросов
  • ✅ PDF отчеты
  • ✅ Шина событий
  • ✅ Система подписок

Планы развития:

  • 🔄 Больше разнообразия в диалогах
  • 🔄 Адаптация под конкретных пользователей
  • 🔄 Сезонные вариации поведения
  • 🔄 Машинное обучение на основе истории
  • 🔄 Интеграция с реальными социальными сетями

📚 Дополнительные материалы

🤝 Участие в разработке

При внесении изменений:

  1. Изучите DEVELOPMENT_LOG.md для понимания контекста
  2. Протестируйте на нескольких днях симуляции
  3. Проверьте отсутствие регрессий в качестве диалогов
  4. Обновите документацию при необходимости

📄 Лицензия

Уточните лицензию в зависимости от требований проекта.


Контакты: Для вопросов по разработке обращайтесь к команде ИИ-ассистентов.

Последнее обновление: 2024-01-20 - Унификация bot_domain и стандартизация логирования Ключевые изменения: Исправлены несоответствия доменов между модулями, стандартизировано использование логгера