# Руководство по созданию собственного чат-бота

Это руководство поможет вам создать простого, расширяемого чат-бота с поддержкой правил, синонимов и автоматическими ответами.

---

## Структура конфигурации

Конфигурация чат-бота обычно включает три основные компонента:

### 1. Синонимайзер (`synonymizer`)
- Обеспечивает расширение распознавания фраз за счет синонимов.
- Формат: объект, где ключ — слово или фраза, значение — массив синонимов.

**Пример:**
```json
"synonymizer": {
  "привет": ["здравствуйте", "приветствую"]
}
```

---

### 2. Правила (`rules`)
- Определяют ответы бота на определенные условия.
- Каждый ответ — это ключ-значение, где ключ — текст ответа, а значение — массив условий.
- Все условия внутри одного правила должны выполняться (логика AND).

**Формат:**
```json
"rules": {
  "Ответ бота": [["contains", "ключевое слово"], ["contains", "еще слово"]]
}
```

**Пример:**
```json
"rules": {
  "Привет! Чем могу помочь?": [["contains", "привет"]]
}
```

---

### 3. Ответ по умолчанию (`default`)
- Текст, который бот возвращает, если ни одно правило не сработало.

```json
"default": "Извините, я не понял вопрос. Можете переформулировать?"
```

---

## Общий пример конфигурации

```json
{
  "synonymizer": {
    "привет": ["здравствуйте", "приветствую"],
    "факт": ["факты"],
    "корова": ["коровы", "коровах"]
  },
  "rules": {
    "Привет! Чем могу помочь?": [["contains", "привет"]],
    "Коровы — очень интересные животные! Они дают молоко и важны для сельского хозяйства.": [["contains", "корова"], ["contains", "факт"]]
  },
  "default": "Извините, я не понял вопрос. Можете переформулировать?"
}
```

---

## Создание собственного бота

### Шаги:

1. **Определите список ключевых слов и синонимов** в `synonymizer`.
2. **Создайте правила в `rules`**, связывая ответы с условиями.
3. **Настройте ответ по умолчанию** для неопределенных запросов.
4. **Реализуйте парсер**, который:
   - Получает пользовательский ввод.
   - Расширяет его через синонимайзер.
   - Проверяет условия правил.
   - Возвращает подходящий ответ или дефолтный.

---

## Советы

- Используйте синонимайзер для расширения распознавания.
- Добавляйте новые правила по мере необходимости.
- Обрабатывайте сложные сценарии с помощью комбинации условий.

---

## Итоги

Создание собственного чат-бота — это настройка правил, расширение словаря синонимов и обработка вводимых данных. Используйте простую структуру и постепенно добавляйте новые сценарии.