Пишу документацию
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2023-03-14 02:11:04 +03:00
parent f01acf5d85
commit 06729e031d
Signed by: upagge
GPG Key ID: D3018BE7BA428CA6
9 changed files with 149 additions and 72 deletions

View File

@ -0,0 +1,19 @@
Чтобы начать, выберете свой сборщик вкладку и добавьте зависимости в проект.
=== ":simple-apachemaven: Maven"
``` xml
<!-- https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-bot-spring-boot-starter -->
<dependency>
<groupId>dev.struchkov.godfather.telegram</groupId>
<artifactId>telegram-bot-spring-boot-starter</artifactId>
<version>0.0.51</version>
</dependency>
```
=== ":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'
```

View File

@ -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.
## Механизм выбора юнита

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

View File

@ -0,0 +1,16 @@
# Устройство юнитов
## Приоритет
## Триггеры
Позволяют указать при каком условии данный юнит будет выбран для обработки.
### `triggerCheck()`
Позволяет реализовать любую проверку. Принимает на вход `Predicate` с полученным сообщением.
### `triggerPhrase()`
## Ответ

View File

@ -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<Mail> generalMenu() {
return AnswerText.<Mail>builder()
.answer(boxAnswer("Hello!"))
.build();
}
}
```
Вот и все, можете запустить ваше приложение и написать боту в телеграм. Если вы все сделали правильно, то он ответит вам.

View File

@ -8,77 +8,26 @@ hide:
Данный фреймворк обладает мощным API для создания диалоговых Telegram ботов.
## Добавляем зависимости
!!! note ""
Данный фреймворк имеет версии как для SpringBoot :simple-spring:, так и для Quarkus Reactive :simple-quarkus:.
Чтобы начать, выберете соответствующую вкладку и добавьте зависимости в свой проект.
Посмотрите, как легко сделать Hello World:
=== ":simple-spring: SpringBoot"
``` java
@Component
public class GeneralMenu implements UnitConfiguration {
Используйте стартер, чтобы быстро начать разработку
=== ":simple-apachemaven: Maven"
``` xml
<!-- https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-bot-spring-boot-starter -->
<dependency>
<groupId>dev.struchkov.godfather.telegram</groupId>
<artifactId>telegram-bot-spring-boot-starter</artifactId>
<version>0.0.51</version>
</dependency>
@Unit(value = GENERAL_MENU, main = true)
public AnswerText<Mail> generalMenu() {
return AnswerText.<Mail>builder()
.answer(boxAnswer("Hello, World!"))
.build();
}
}
```
=== ":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
<!-- https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-consumer-quarkus -->
<dependency>
<groupId>dev.struchkov.godfather.telegram</groupId>
<artifactId>telegram-consumer-quarkus</artifactId>
<version>0.0.51</version>
</dependency>
<!-- https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-core-quarkus -->
<dependency>
<groupId>dev.struchkov.godfather.telegram</groupId>
<artifactId>telegram-core-quarkus</artifactId>
<version>0.0.51</version>
</dependency>
<!-- https://mvnrepository.com/artifact/dev.struchkov.godfather.telegram/telegram-sender-quarkus -->
<dependency>
<groupId>dev.struchkov.godfather.telegram</groupId>
<artifactId>telegram-sender-quarkus</artifactId>
<version>0.0.51</version>
</dependency>
```
=== ":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'
```
--8<-- ".dependencies.md"

View File

@ -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