PHPackages                             chipslays/assistant - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. chipslays/assistant

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

chipslays/assistant
===================

1.0.2(2y ago)09MITPHPPHP ^8.1

Since Jun 6Pushed 2y ago1 watchersCompare

[ Source](https://github.com/chipslays/assistant)[ Packagist](https://packagist.org/packages/chipslays/assistant)[ RSS](/packages/chipslays-assistant/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (2)Versions (4)Used By (0)

Assistant
=========

[](#assistant)

Эта библиотека была создана для внедрения простых чат-ботов на сайтах и любых других проектах.

Assistant - это простое API, в которое вы заносите варианты сообщений и ответов на них. Результат ответа может быть абсолютно разным: строка, массив, результат выполнения если это callable или совершенно любой другой тип данных. Это делает библиотеку гибкой в использовании.

Установка
---------

[](#установка)

```
composer require chipslays/assistant
```

Просто пример
-------------

[](#просто-пример)

```
use Chatbot\Assistant;

$assistant = new Assistant;

$assistant->add(['Как связаться со службой поддержки', ...], 'Наш телефон: 8 800 555-35-35');
$assistant->add(['Какой-то другой вопрос от пользователя', ...], 'Другой ответ');

$answer = $assistant->run('Какой способ связи с вами есть?'); // Наш телефон: 8 800 555-35-35
```

API
---

[](#api)

### `Assistant(TextProcessorInterface $textProcessor = new SimpleTextProcessor)`

[](#assistanttextprocessorinterface-textprocessor--new-simpletextprocessor)

```
use Chatbot\Assistant;
use Chatbot\Processors\TextProcessor;

// по умолчанию Assistant использует SimpleTextProcessor
// но можно воспользоваться MorphyTextProcessor
$assistant = new Assistant(new MorphyTextProcessor);
```

```
use Chatbot\Assistant;
use Chatbot\Processors\TextProcessor;

// процессор MorphyTextProcessor поддерживает другие языки из phpMorphy
// но SimpleTextProcessor поддерживает все (?) языки, которые попадают под ~[^a-zа-яё0-9]~iu
$assistant = new Assistant(new MorphyTextProcessor('en'));
```

```
use Chatbot\Assistant;
use Chatbot\Processors\TextProcessor;
use cijic\phpMorphy\Morphy;

// или можно передать объект Morphy в MorphyTextProcessor
$assistant = new Assistant(new MorphyTextProcessor(new Morphy('en')));
```

### `add(array $questions, mixed $answer): self`

[](#addarray-questions-mixed-answer-self)

```
$assistant->add([...], 'Ответ в виде строки');

$answer = $assistant->run('...'); // ответ в виде строки
```

```
$assistant->add([...], [
    'text' => 'Ответ в виде массива',
    'buttons' => [...],
    'yetAnotherKey' => 'Еще какое-то значение'
]);

$answer = $assistant->run('...'); // [array]
```

```
$assistant->add([...], function () {
    $user = fetchUser(...); // что-нибудь делаем
    return 'Ответ в виде строки которая вернет функция'; // или любой другой тип данных
});

$answer = $assistant->run('...'); // string
```

```
$assistant->add([...], 'Ответ в виде строки 1');
$assistant->add([...], 'Ответ в виде строки 2');
$assistant->add([...], 'Ответ в виде строки 3');

// получаем ответ в виде массива в котором содержит score (float), answer (mixed) и default (bool)
$answer = $assistant->run('...', asArray: true);

// элементы в массиве отсортированы по ключу score (по убыванию), содержит только ответы где score > 0
// если ответы не найдены и не указан ответ по умолчанию, то вернет null
// если ответы не найдены и указан ответ по умолчанию, вернут один элемент где ключ default == true
//
// ^ array:1 [
//   0 => array:3 [
//     "score" => 0.21693045781866 // точность ответа
//     "answer" => "Ответ в виде строки 1" // сам ответ который мы указали, если это функция и т.п., ее нужно выполнить самостоятельно
//     "default" => false // true - это ответ по умолчанию если не найден, false - соответственно если ответ был найден
//   ]
//   ...
// ]
```

```
$assistant->add([...], fn () => 'Ответ в виде функции');
$assistant->add([...], 'Ответ в виде строки');

$answers = $assistant->run('...', asArray: true);

// можем воспользоваться методом processAnswer
$answer = $assistant->processAnswer($answers[0]['answer']); // Ответ в виде функции

// или обработать самостоятельно
$answer = $answers[0]['answer'];
$answer = is_callable($answer) ? call_user_func($answer) : $answer;
```

### `setDataset(array $dataset): self`

[](#setdatasetarray-dataset-self)

```
// массовое добавление (под капотом цикл с методом add)
$dataset = [
    [
        'questions' => [
            '...',
        ],
        'answer' => '...',
    ],
    [
        'questions' => [
            '...',
        ],
        'answer' => [...],
    ],
    [
        'questions' => [
            '...',
        ],
        'answer' => fn () => ...,
    ],
];

$assistant->setDataset($dataset);
```

### `setDefaultAnswer(mixed $answer): void`

[](#setdefaultanswermixed-answer-void)

```
// ответ по умолчанию, если не были найдены ответы
// поддерживает так же любые типы ответа
$assistant->setDefaultAnswer('...');
$assistant->setDefaultAnswer([...]);
$assistant->setDefaultAnswer(fn () => ...);
```

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

1077d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/19103498?v=4)[chipslays](/maintainers/chipslays)[@chipslays](https://github.com/chipslays)

---

Top Contributors

[![chipslays](https://avatars.githubusercontent.com/u/19103498?v=4)](https://github.com/chipslays "chipslays (7 commits)")

---

Tags

chatbotassistant

### Embed Badge

![Health badge](/badges/chipslays-assistant/health.svg)

```
[![Health](https://phpackages.com/badges/chipslays-assistant/health.svg)](https://phpackages.com/packages/chipslays-assistant)
```

###  Alternatives

[botman/botman

Create messaging bots in PHP with ease.

6.2k1.5M97](/packages/botman-botman)[grumpydictator/firefly-iii

Firefly III: a personal finances manager.

22.8k69.3k](/packages/grumpydictator-firefly-iii)[firefly-iii/data-importer

Firefly III Data Import Tool.

7545.8k](/packages/firefly-iii-data-importer)[nlgen/nlgen

A library for creating recursive-descent natural language generators.

56181.3k](/packages/nlgen-nlgen)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
