Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .eslintignore

This file was deleted.

36 changes: 0 additions & 36 deletions .eslintrc.json

This file was deleted.

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
/dist/*
/docs/*
/node_modules/*
/coverage/*
/package-lock.json
212 changes: 125 additions & 87 deletions CHANGELOG.md

Large diffs are not rendered by default.

160 changes: 103 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# umbot

Универсальный движок для разработки чат-ботов и голосовых навыков с единой бизнес-логикой для различных платформ.
Универсальная библиотека для разработки чат-ботов и голосовых навыков с единой бизнес-логикой для различных платформ.

[![npm version](https://badge.fury.io/js/umbot.svg)](https://badge.fury.io/js/umbot)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
Expand All @@ -14,56 +14,74 @@

### Основная документация

- [API Reference](src/docs/api-reference.md) - Подробное описание всех классов, методов и интерфейсов
- [Быстрый старт](src/docs/getting-started.md) - Подробное описание, для быстрого старта проекта
- [Интеграция с платформами](src/docs/platform-integration.md) - Руководство по интеграции с различными платформами
- [API Reference](src/docs/api-reference.md) - Подробное описание всех классов, методов и интерфейсов
- [Быстрый старт](src/docs/getting-started.md) - Подробное описание, для быстрого старта проекта
- [Интеграция с платформами](src/docs/platform-integration.md) - Руководство по интеграции с различными платформами

## 📚 Навигация по документации

- [Быстрый старт](src/docs/getting-started.md)
- [Интеграция с платформами](src/docs/platform-integration.md)
- [Примеры](examples/README.md)
- [FAQ](src/docs/getting-started.md#часто-задаваемые-вопросы)
- [API](https://www.maxim-m.ru/bot/ts-doc/index.html)
- [Быстрый старт](src/docs/getting-started.md)
- [Интеграция с платформами](src/docs/platform-integration.md)
- [Примеры](examples/README.md)
- [FAQ](src/docs/getting-started.md#часто-задаваемые-вопросы)
- [API](https://www.maxim-m.ru/bot/ts-doc/index.html)

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

- 📚 [Официальная документация](https://www.maxim-m.ru/bot/ts-doc/index.html)
- 📢 [Telegram канал](https://t.me/joinchat/AAAAAFM8AcuniLTwBLuNsw)
- 💬 [Telegram группа](https://t.me/mm_universal_bot)
- 🐛 [Issues на GitHub](https://github.com/max36895/universal_bot-ts/issues)
- 📚 [Официальная документация](https://www.maxim-m.ru/bot/ts-doc/index.html)
- 📢 [Telegram канал](https://t.me/joinchat/AAAAAFM8AcuniLTwBLuNsw)
- 💬 [Telegram группа](https://t.me/mm_universal_bot)
- 🐛 [Issues на GitHub](https://github.com/max36895/universal_bot-ts/issues)

## 📖 Описание

Движок позволяет создать навык для `Яндекс.Алиса`, `Маруси`, `Сбер(SmartApp)`, а также бота для `VK`, `Viber` или
Библиотека позволяет создать навык для `Яндекс.Алиса`, `Маруси`, `Сбер(SmartApp)`, а также бота для `VK`,`MAX`, `Viber`
или
`Telegram`, с идентичной логикой. Вы можете использовать один и тот же код бизнес-логики для всех платформ, что
значительно упрощает разработку и поддержку.

Для использования собственной платформы укажите своё значение в `mmApp.appType`. По умолчанию установлено значение
Для использования собственной платформы укажите своё значение в `bot.appType`. По умолчанию установлено значение
`alisa`.

`umbot` спроектирована с прицелом на высокую производительность и предсказуемое время отклика. Библиотека берет на себя
значительную часть обработки запроса, включая сопоставление команд, работу с пользовательскими данными, формирование
ответа и автоматическую загрузку/кэширование медиафайлов (изображений, аудио).

**Гарантия времени выполнения библиотеки:** Библиотека **гарантирует**, что её собственная обработка запроса (без
учета времени выполнения пользовательской логики в `action` и первичной загрузки больших медиафайлов) **не превысит 1
секунду** в подавляющем большинстве сценариев. Это означает, что разработчику, использующему `umbot`, остается около
2 секунд из общего 3-секундного лимита Яндекс.Диалогов (или других платформ) для выполнения своей прикладной логики.
Время первичной загрузки новых изображений или аудиофайлов (когда `token` для файла ещё не кэширован в БД) может
превысить 1 секунду, но после первой загрузки и кэширования, последующие обращения к тем же файлам будут быстрыми и
укладываются в указанный лимит.

Для получения подробной информации о тестировании производительности и анализе различных сценариев (включая
экстремальные случаи с большим количеством команд и регулярными выражениями) см. отдельный
документ: [Производительность и гарантии](src/docs/performance-and-guarantees.md). <!-- Ссылка на предполагаемый отдельный файл документации -->

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

### Поддерживаемые платформы

| Платформа | Идентификатор | Статус |
| -------------------------- | ------------------ | -------------------- |
| Яндекс.Алиса | `alisa` | ✅ Полная поддержка |
| Маруся | `marusia` | ✅ Полная поддержка |
| Сбер SmartApp | `smart_app` | ✅ Полная поддержка |
| Telegram | `telegram` | ✅ Полная поддержка |
| VK | `vk` | ✅ Полная поддержка |
| Viber | `viber` | ✅ Полная поддержка |
| Пользовательские платформы | `user_application` | ✅ Базовая поддержка |
| Платформа | Идентификатор | Статус |
|----------------------------|--------------------|-----------------------------|
| Яндекс.Алиса | `alisa` | ✅ Полная поддержка |
| Маруся | `marusia` | ✅ Полная поддержка |
| Сбер SmartApp | `smart_app` | ✅ Полная поддержка |
| Telegram | `telegram` | ✅ Полная поддержка |
| VK | `vk` | ✅ Полная поддержка |
| Max | `max_app` | ✅ Полная поддержка(v-2.1.0) |
| Viber | `viber` | ✅ Полная поддержка |
| Пользовательские платформы | `user_application` | ✅ Базовая поддержка |

### Ключевые особенности

- ✨ Единый код для всех платформ
- 🔄 Автоматическая конвертация форматов сообщений
- 💾 Встроенное управление состоянием
- 🎨 Богатые возможности UI (кнопки, карточки, галереи)
- 🔊 Поддержка голосового ввода/вывода
- 🚀 **Простота разработки** - TypeScript из коробки, автодополнение в IDE
- ✨ Единый код для всех платформ
- 🔄 Автоматическая конвертация форматов сообщений
- 💾 Встроенное управление состоянием
- 🎨 Богатые возможности UI (кнопки, карточки, галереи)
- 🔊 Поддержка голосового ввода/вывода
- 🚀 **Простота разработки** - TypeScript из коробки, автодополнение в IDE

## 🎯 Примеры использования

Expand Down Expand Up @@ -135,16 +153,16 @@ npm install umbot

```json
{
"name": "my-umbot-project",
"description": "Описание вашего проекта",
"main": "index.js",
"scripts": {
"start": "node ./dist/index.js",
"build": "rm -rf dist/ && tsc"
},
"dependencies": {
"umbot": "*"
}
"name": "my-umbot-project",
"description": "Описание вашего проекта",
"main": "index.js",
"scripts": {
"start": "node ./dist/index.js",
"build": "rm -rf dist/ && tsc"
},
"dependencies": {
"umbot": "*"
}
}
```

Expand Down Expand Up @@ -257,10 +275,12 @@ export class ButtonController extends BotController {
##### Динамическое добавление команд

```typescript
import { mmApp, BotController } from 'umbot';
import { Bot, BotController } from 'umbot';

const bot = new Bot();

// Простая команда со словами-триггерами
mmApp.addCommand(
bot.addCommand(
'greeting',
['привет', 'здравствуй'],
(userCommand: string, botController?: BotController) => {
Expand All @@ -271,7 +291,7 @@ mmApp.addCommand(
);

// Команда с регулярными выражениями
mmApp.addCommand(
bot.addCommand(
'numbers',
['\\b\\d{3}\\b'], // Числа от 100 до 999
(userCommand: string, botController?: BotController) => {
Expand All @@ -283,15 +303,15 @@ mmApp.addCommand(
);

// Удаление команды по имени
mmApp.removeCommand('greeting');
bot.removeCommand('greeting');
```

Важные замечания:

- При `isPattern: true` строки в `slots` интерпретируются как регулярные выражения
- Без `isPattern` (или `isPattern: false`) происходит поиск точного совпадения слов
- Callback-функция может возвращать строку (она станет ответом) или void
- В callback доступен весь функционал `BotController`
- При `isPattern: true` строки в `slots` интерпретируются как регулярные выражения
- Без `isPattern` (или `isPattern: false`) происходит поиск точного совпадения слов
- Callback-функция может возвращать строку (она станет ответом) или void
- В callback доступен весь функционал `BotController`

#### 4. Сборка проекта

Expand Down Expand Up @@ -353,6 +373,7 @@ VK_CONFIRMATION_TOKEN=your-vk-confirmation-token
VIBER_TOKEN=your-viber-token
YANDEX_TOKEN=your-alisa-token
MARUSIA_TOKEN=your-marusia-token
MAX_TOKEN=your-max-token
DB_HOST=localhost
DB_USER=user
Expand Down Expand Up @@ -394,23 +415,48 @@ acme.sh --install-cert -d {{domain}} --key-file {{key file}} --fullchain-file {{

После получения сертификата, перезапустите сервер. Для ngnix - `sudo service nginx reload`

# 🌐 Кастомизация HTTP-слоя

Начиная с версии `2.1.0`, вы можете заменить встроенный `fetch` на любой совместимый HTTP-клиент через
`AppContext.httpClient`. Это позволяет добавлять retry-логику, таймауты, tracing, моки в тестах и т.д.

```ts
const bot = new Bot('alisa');
const ctx = bot.getAppContext();

ctx.httpClient = async (input, init) => {
const controller = new AbortController();
const id = setTimeout(() => controller.abort(), 5000);
try {
const res = await fetch(input, { ...init, signal: controller.signal });
clearTimeout(id);
return res;
} catch (e) {
clearTimeout(id);
throw e;
}
};

bot.start();
```

# 🛠 Инструменты разработчика

- [CLI](./cli/README.md) команды
- Шаблоны проектов: [тут](./examples/README.md)
- [CLI](./cli/README.md) команды
- Шаблоны проектов: [тут](./examples/README.md)

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

- [Создание навыка "Я никогда не"](https://www.maxim-m.ru/article/sozdanie-navyika-ya-nikogda-ne)
- [Примеры проектов](./examples/README.md)
- [Список изменений](./CHANGELOG.md)
- [Создание навыка "Я никогда не"](https://www.maxim-m.ru/article/sozdanie-navyika-ya-nikogda-ne)
- [Примеры проектов](./examples/README.md)
- [Список изменений](./CHANGELOG.md)

# Тестирование проекта

Протестировать приложение можно 2 способами:

1. Загрузив проект на сервер (Актуально для Алисы и сбера).
2. Через консоль, средствами движка (локально).
2. Через консоль, средствами библиотеки (локально).

## Тестирование на сервере

Expand Down Expand Up @@ -452,6 +498,6 @@ MIT License. См. [LICENSE](./LICENSE) для деталей.

Если у вас есть вопросы или предложения:

- 📧 Email: maximco36895@yandex.ru
- 💬 [Telegram группа](https://t.me/mm_universal_bot)
- 🐛 [Issues на GitHub](https://github.com/max36895/universal_bot-ts/issues)
- 📧 Email: maximco36895@yandex.ru
- 💬 [Telegram группа](https://t.me/mm_universal_bot)
- 🐛 [Issues на GitHub](https://github.com/max36895/universal_bot-ts/issues)
8 changes: 3 additions & 5 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@

| Версия | Статус поддержки | Окончание поддержки |
| ------ | -------------------- | ------------------- |
| 2.1.x | ✅ Поддерживается | - |
| 2.0.x | ✅ Поддерживается | - |
| 1.5.x | ✅ Поддерживается | - |
| 1.1.x | ✅ Поддерживается | - |
| 1.5.x | ✅ Поддерживается | 31.10.2025 |
| 1.1.x | ✅ Поддерживается | 31.10.2025 |
| ≤ 1.0 | ❌ Не поддерживается | - |

## 🛡️ Сообщение об уязвимости

### Как сообщить об уязвимости

1. **GitHub Issues**

- Перейдите по ссылке: [Создать Issue](https://github.com/max36895/universal_bot-ts/issues/new/choose)
- Выберите шаблон "Security Vulnerability"
- Подробно опишите проблему, включая:
Expand All @@ -40,13 +40,11 @@
## 🔐 Рекомендации по безопасности

1. **Регулярно обновляйтесь**

- Следите за новыми версиями
- Проверяйте CHANGELOG.md
- Используйте `npm audit` для проверки зависимостей

2. **Защита данных**

- Не храните чувствительные данные в открытом виде
- Используйте переменные окружения для токенов
- Проверяйте входные данные от пользователей
Expand Down
8 changes: 3 additions & 5 deletions cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

CLI утилита umbot предназначена для быстрого создания и настройки новых проектов на базе umbot. Утилита позволяет:

- Создавать новые проекты по шаблонам
- Настраивать конфигурацию проекта
- Генерировать базовую структуру приложения
- Создавать новые проекты по шаблонам
- Настраивать конфигурацию проекта
- Генерировать базовую структуру приложения

## Установка

Expand Down Expand Up @@ -152,13 +152,11 @@ umbot create quiz-config.json
## Лучшие практики

1. **Именование проектов**:

- Используйте понятные имена
- Избегайте пробелов и специальных символов
- Придерживайтесь kebab-case

2. **Конфигурация**:

- Храните конфигурацию в отдельных файлах
- Не включайте чувствительные данные в репозиторий
- Используйте разные конфигурации для разных окружений
Expand Down
Loading
Loading