npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@dieugene/kak-dela-bot-public

v1.0.32

Published

Расширенный шаблон Telegram-бота "Как дела?" с ИИ-возможностями, продвинутым управлением пользователями и системой автоматических уведомлений. Включает: диалоговый ИИ с Zod-схемами, шину новостей с TTL, систему подписок между пользователями, проактивные у

Readme

🤖 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 и стандартизация логирования Ключевые изменения: Исправлены несоответствия доменов между модулями, стандартизировано использование логгера