diff --git a/documentation/spring/ru/.dependencies.md b/documentation/spring/ru/.dependencies.md new file mode 100644 index 0000000..cf7f399 --- /dev/null +++ b/documentation/spring/ru/.dependencies.md @@ -0,0 +1,19 @@ +Чтобы начать, выберете свой сборщик вкладку и добавьте зависимости в проект. + +=== ":simple-apachemaven: Maven" + + ``` xml + + + dev.struchkov.godfather.telegram + telegram-bot-spring-boot-starter + 0.0.51 + + ``` + +=== ":simple-gradle: Gradle" + + ``` groovy + // https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-bot-spring-boot-starter + implementation 'dev.struchkov.godfather.telegram:telegram-bot-spring-boot-starter:0.0.51' + ``` \ No newline at end of file diff --git a/documentation/spring/ru/docs/architecture/general.md b/documentation/spring/ru/docs/architecture/general.md new file mode 100644 index 0000000..73603a1 --- /dev/null +++ b/documentation/spring/ru/docs/architecture/general.md @@ -0,0 +1,26 @@ +# Основная идея + +## Голосарий + +## Юнит + +## Сценарий +Для понимания рассмотрим небольшой пример по схеме изображенной ниже. Так же небольшие примеры обработки есть в тестах. + +![Типичный сценарий](img/scenario.png){ loading=lazy align=left } + +Сценариями в данном случае являются: + +* Unit1 —> Unit2 —> Unit5 —> Unit7 —> Unit9 +* Unit1 —> Unit2 —> Unit6 —> Unit8; +* Unit1 —> Unit3 —> Unit6 —> Unit8; +* Unit1 —> Unit4 —> Unit9; +* Unit10. + +Пользователь присылает боту свое первое сообщение, например, «Привет». Если сообщение удовлетворяет регулярному выражению или содержит необходимое количество ключевых слов Unit1, то возвращается Unit1, то же самое относится к Unit10. + +Если оба юнита удовлетворяют запросу пользователя, то будет возвращен юнит с большим приоритетом (поле priority). Если приоритеты равны, то случайный Unit. + +В нашем примере, на первое сообщение, пользователь получил Unit1, поэтому следующее сообщение пользователя будет ассоциироваться с множеством: Unit2, Unit3 и Unit4. + +## Механизм выбора юнита \ No newline at end of file diff --git a/documentation/spring/ru/docs/architecture/img/scenario.png b/documentation/spring/ru/docs/architecture/img/scenario.png new file mode 100644 index 0000000..08244fe Binary files /dev/null and b/documentation/spring/ru/docs/architecture/img/scenario.png differ diff --git a/documentation/spring/ru/docs/architecture/unit.md b/documentation/spring/ru/docs/architecture/unit.md new file mode 100644 index 0000000..6c24a4b --- /dev/null +++ b/documentation/spring/ru/docs/architecture/unit.md @@ -0,0 +1,16 @@ +# Устройство юнитов + +## Приоритет + + +## Триггеры + +Позволяют указать при каком условии данный юнит будет выбран для обработки. + +### `triggerCheck()` + +Позволяет реализовать любую проверку. Принимает на вход `Predicate` с полученным сообщением. + +### `triggerPhrase()` + +## Ответ \ No newline at end of file diff --git a/documentation/spring/ru/docs/architecture/concept.md b/documentation/spring/ru/docs/architecture/unit/answer-check.md similarity index 100% rename from documentation/spring/ru/docs/architecture/concept.md rename to documentation/spring/ru/docs/architecture/unit/answer-check.md diff --git a/documentation/spring/ru/docs/architecture/unit/answer-text.md b/documentation/spring/ru/docs/architecture/unit/answer-text.md new file mode 100644 index 0000000..e69de29 diff --git a/documentation/spring/ru/docs/getting-started/hello-godfather.md b/documentation/spring/ru/docs/getting-started/hello-godfather.md index e284e77..759d02a 100644 --- a/documentation/spring/ru/docs/getting-started/hello-godfather.md +++ b/documentation/spring/ru/docs/getting-started/hello-godfather.md @@ -2,3 +2,64 @@ Начнем разработку бота с простого примера. Поздороваемся с пользователем. +## Регистрация бота + +Сначала нужно зарегистрировать бота и получить токен в Telegram. + +[:robot: Зарегистрировать бота](@BotFather){ .md-button } + + +## Зависимости + +--8<-- ".dependencies.md" + +## Конфигурация + +Теперь необходимо указать данные для подключения к боту в Telegram. + +``` yaml title="application.yml" +telegram: + bot: + username: username_bot + token: your_token +``` + +### Прокси +Если телеграм заблокирован у вашего хостера/провайдера, вы можете использовать прокси + +``` yaml title="application.yml" hl_lines="5-11" +telegram: + bot: + username: username_bot + token: your_token + proxy: + enable: true + host: PROXY_HOST + port: PROXY_PORT + type: PROXY_TYPE + user: PROXY_USERNAME + password: PROXY_PASSWORD +``` + +## Первый юнит + +Теперь создаем класс конфигурации юнитов и добавляем первый юнит (1). +{ .annotate } + +1. Юниты это базовая сущность фреймворка + +``` java +@Component +public class GeneralMenu implements UnitConfiguration { + + @Unit(value = GENERAL_MENU, main = true) + public AnswerText generalMenu() { + return AnswerText.builder() + .answer(boxAnswer("Hello!")) + .build(); + } + +} +``` + +Вот и все, можете запустить ваше приложение и написать боту в телеграм. Если вы все сделали правильно, то он ответит вам. \ No newline at end of file diff --git a/documentation/spring/ru/docs/index.md b/documentation/spring/ru/docs/index.md index adb0536..2a441a1 100644 --- a/documentation/spring/ru/docs/index.md +++ b/documentation/spring/ru/docs/index.md @@ -8,77 +8,26 @@ hide: Данный фреймворк обладает мощным API для создания диалоговых Telegram ботов. +!!! note "" + + Данный фреймворк имеет версии как для SpringBoot :simple-spring:, так и для Quarkus Reactive :simple-quarkus:. + +Посмотрите, как легко сделать Hello World: + +``` java +@Component +public class GeneralMenu implements UnitConfiguration { + + @Unit(value = GENERAL_MENU, main = true) + public AnswerText generalMenu() { + return AnswerText.builder() + .answer(boxAnswer("Hello, World!")) + .build(); + } + +} +``` + ## Добавляем зависимости -Данный фреймворк имеет версии как для SpringBoot :simple-spring:, так и для Quarkus Reactive :simple-quarkus:. - -Чтобы начать, выберете соответствующую вкладку и добавьте зависимости в свой проект. - -=== ":simple-spring: SpringBoot" - - Используйте стартер, чтобы быстро начать разработку - - === ":simple-apachemaven: Maven" - - ``` xml - - - dev.struchkov.godfather.telegram - telegram-bot-spring-boot-starter - 0.0.51 - - - ``` - - === ":simple-gradle: Gradle" - - ``` groovy - // https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-bot-spring-boot-starter - implementation 'dev.struchkov.godfather.telegram:telegram-bot-spring-boot-starter:0.0.51' - ``` - -=== ":simple-quarkus: Quarkus Reactive" - - Реактивная версия - - !!! question "Почему нe extension?" - - Все будет, но не сразу :wink: - - === ":simple-apachemaven: Maven" - - ``` xml - - - dev.struchkov.godfather.telegram - telegram-consumer-quarkus - 0.0.51 - - - - - dev.struchkov.godfather.telegram - telegram-core-quarkus - 0.0.51 - - - - - dev.struchkov.godfather.telegram - telegram-sender-quarkus - 0.0.51 - - ``` - - === ":simple-gradle: Gradle" - - ``` groovy - // https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-consumer-quarkus - implementation 'dev.struchkov.godfather.telegram:telegram-consumer-quarkus:0.0.51' - - // https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-core-quarkus - implementation 'dev.struchkov.godfather.telegram:telegram-core-quarkus:0.0.51' - - // https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-sender-quarkus - implementation 'dev.struchkov.godfather.telegram:telegram-sender-quarkus:0.0.51' - ``` \ No newline at end of file +--8<-- ".dependencies.md" \ No newline at end of file diff --git a/documentation/spring/ru/mkdocs.yml b/documentation/spring/ru/mkdocs.yml index f6328eb..8bf7ceb 100644 --- a/documentation/spring/ru/mkdocs.yml +++ b/documentation/spring/ru/mkdocs.yml @@ -14,6 +14,12 @@ nav: - Поддержать разработку: support-development.md - ChangeLog: - changelog/index.md + - Архитектура: + - Основная идея: architecture/general.md + - Юниты: + - architecture/unit.md + - architecture/unit/answer-text.md + - architecture/unit/answer-check.md theme: name: material