From c379904d26017d5bda698f1048db604f089efa32 Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Wed, 15 Mar 2023 02:19:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B8=D1=88=D1=83=20=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- documentation/spring/ru/.dependencies.md | 2 - .../spring/ru/docs/architecture/general.md | 37 ++++++++++++++++++- documentation/spring/ru/docs/guides/cyclic.md | 0 .../ru/docs/guides/exception-handling.md | 0 documentation/spring/ru/docs/guides/index.md | 10 ----- .../spring/ru/docs/guides/security.md | 2 + documentation/spring/ru/docs/index.md | 5 ++- .../spring/ru/docs/support-development.md | 2 + documentation/spring/ru/mkdocs.yml | 20 ++++++---- 9 files changed, 55 insertions(+), 23 deletions(-) create mode 100644 documentation/spring/ru/docs/guides/cyclic.md create mode 100644 documentation/spring/ru/docs/guides/exception-handling.md delete mode 100644 documentation/spring/ru/docs/guides/index.md create mode 100644 documentation/spring/ru/docs/guides/security.md diff --git a/documentation/spring/ru/.dependencies.md b/documentation/spring/ru/.dependencies.md index cf7f399..67588d7 100644 --- a/documentation/spring/ru/.dependencies.md +++ b/documentation/spring/ru/.dependencies.md @@ -1,5 +1,3 @@ -Чтобы начать, выберете свой сборщик вкладку и добавьте зависимости в проект. - === ":simple-apachemaven: Maven" ``` xml diff --git a/documentation/spring/ru/docs/architecture/general.md b/documentation/spring/ru/docs/architecture/general.md index 73603a1..6e5bdc1 100644 --- a/documentation/spring/ru/docs/architecture/general.md +++ b/documentation/spring/ru/docs/architecture/general.md @@ -1,10 +1,21 @@ # Основная идея -## Голосарий +Проект GodFather направлен на унификацию создания ботов для различных мессенджеров сетей. ## Юнит +Базовая сущность фреймворка. Юнит содержит в себе различные лямба выражения, которые встраиваются в процесс обработки сообщений. Именно в написании этих лямбд и заключается основная работа с библиотекой. + +Есть несколько разных типов юнитов, подробнее о каждом читайте в отдельном разделе. + +Юнит представляет собой некую конфигурацию, которая передается в обработчик юнита. У каждого типа юнита есть свой обработчик. + +Юниты могут образовывать связный список, тем самым определяя дерево сценарий бота. + ## Сценарий + + + Для понимания рассмотрим небольшой пример по схеме изображенной ниже. Так же небольшие примеры обработки есть в тестах. ![Типичный сценарий](img/scenario.png){ loading=lazy align=left } @@ -23,4 +34,26 @@ В нашем примере, на первое сообщение, пользователь получил Unit1, поэтому следующее сообщение пользователя будет ассоциироваться с множеством: Unit2, Unit3 и Unit4. -## Механизм выбора юнита \ No newline at end of file +## Механизм выбора юнита + +Пока сценарий линейный никакой необходимости в определении юнита нет. Однако, когда у вас на одном уровне находится несколько юнитов, то возникает необходимость выбрать юнит для последующей обработки сообщений. (1) +{ .annotate } + +1. Обратимся к предыдущей схеме сценария. Как выбрать какой юнит обработать после обработки Unit 1? + +Юниты обладают триггерами, которые сигнализируют о том, что данный юнит может обработать запрос от пользователя. + +Механизм выбора можно описать несколькими этапами: + +* Сначала проверяются триггеры у всех юнитов. +* Все юниты, триггеры которых сработали, являются потенциальными кандидатами на обработку +* Из этих юнитов выбирается юнит с наибольшим приоритетом. Если у них одинаковый приоритет, то выбирается случайный юнит. + +Но как выбираются первые юниты (1) для обработки? В начале сценария стоят main юниты. Именно main юниты участвуют в первом раунде выбора обработчика. Чтобы создать main юнит, необходимо в аннотации `@Unit` установить параметр `main = true`. +{ .annotate } + +1. На схеме это Unit 1 и Unit 2 + +Также существуют так называемые глобальные юниты, которые участвуют в каждом раунде выбора. Чтобы создать глобальный unit, необходимо в аннотации `@Unit` установить параметр `global = true`. + + diff --git a/documentation/spring/ru/docs/guides/cyclic.md b/documentation/spring/ru/docs/guides/cyclic.md new file mode 100644 index 0000000..e69de29 diff --git a/documentation/spring/ru/docs/guides/exception-handling.md b/documentation/spring/ru/docs/guides/exception-handling.md new file mode 100644 index 0000000..e69de29 diff --git a/documentation/spring/ru/docs/guides/index.md b/documentation/spring/ru/docs/guides/index.md deleted file mode 100644 index f5adf54..0000000 --- a/documentation/spring/ru/docs/guides/index.md +++ /dev/null @@ -1,10 +0,0 @@ -# Hello Mutiny! - -Once you made Mutiny available to your classpath, you can start writing code. -Let's start with this simple program: - -## Test - -### Test 2 - -## Test 3 \ No newline at end of file diff --git a/documentation/spring/ru/docs/guides/security.md b/documentation/spring/ru/docs/guides/security.md new file mode 100644 index 0000000..c6851b6 --- /dev/null +++ b/documentation/spring/ru/docs/guides/security.md @@ -0,0 +1,2 @@ +# Безопасность + diff --git a/documentation/spring/ru/docs/index.md b/documentation/spring/ru/docs/index.md index 2a441a1..e68a435 100644 --- a/documentation/spring/ru/docs/index.md +++ b/documentation/spring/ru/docs/index.md @@ -1,10 +1,11 @@ --- hide: - comments + - navigation --- -# Фреймворк для создания Telegram ботов +# GodFather Bot - Фреймворк для создания Telegram ботов Данный фреймворк обладает мощным API для создания диалоговых Telegram ботов. @@ -30,4 +31,6 @@ public class GeneralMenu implements UnitConfiguration { ## Добавляем зависимости +Чтобы начать, выберете свой сборщик вкладку и добавьте зависимости в проект. + --8<-- ".dependencies.md" \ No newline at end of file diff --git a/documentation/spring/ru/docs/support-development.md b/documentation/spring/ru/docs/support-development.md index c8339a3..029667d 100644 --- a/documentation/spring/ru/docs/support-development.md +++ b/documentation/spring/ru/docs/support-development.md @@ -2,6 +2,8 @@ description: Спонсорская поддержка делает проект устойчивым, так как она окупает время сопровождающих этого проекта. hide: - comments + - navigation + --- # :heart:{ .heart } Поддержать разработку diff --git a/documentation/spring/ru/mkdocs.yml b/documentation/spring/ru/mkdocs.yml index 8bf7ceb..cb059f9 100644 --- a/documentation/spring/ru/mkdocs.yml +++ b/documentation/spring/ru/mkdocs.yml @@ -10,16 +10,20 @@ copyright: Copyright © 2018 - 2023 Struchkov Mark nav: - О проекте: - index.md - - Hello World!: getting-started/hello-godfather.md - - Поддержать разработку: support-development.md - - ChangeLog: - - changelog/index.md + - Конфигурация: + - Hello World!: getting-started/hello-godfather.md + - Юниты: + - architecture/unit.md + - architecture/unit/answer-text.md + - architecture/unit/answer-check.md + - Гайды: + - Безопасность: guides/security.md + - Циклическая зависимость: guides/cyclic.md - Архитектура: - Основная идея: architecture/general.md - - Юниты: - - architecture/unit.md - - architecture/unit/answer-text.md - - architecture/unit/answer-check.md + - ChangeLog: changelog/index.md + - Поддержать: support-development.md + theme: name: material