From 0c3b098e55f3ab62117a7e3fd63f182d3e7e992f Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Thu, 26 May 2022 02:19:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BA=D0=BB=D0=B0=D0=B2=D0=B8=D0=B0?= =?UTF-8?q?=D1=82=D1=83=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot-context/pom.xml | 2 +- .../godfather/context/domain/BoxAnswer.java | 27 ++++++++-------- .../domain/keyboard/button/SimpleButton.java | 4 +-- .../keyboard/simple/SimpleKeyBoard.java | 6 ++-- .../keyboard/simple/SimpleKeyBoardLine.java | 2 +- .../service/usercode/MessageFunction.java | 10 ++++++ .../godfather/context/utils/KeyBoards.java | 8 ++--- bot-core/pom.xml | 2 +- .../godfather/core/GeneralAutoResponder.java | 2 +- .../core/domain/unit/AnswerText.java | 32 ++++++++++++++++--- .../service/action/AnswerValidityAction.java | 2 +- pom.xml | 4 +-- 12 files changed, 67 insertions(+), 34 deletions(-) create mode 100644 bot-context/src/main/java/dev/struchkov/godfather/context/service/usercode/MessageFunction.java diff --git a/bot-context/pom.xml b/bot-context/pom.xml index c53c835..a8eb960 100644 --- a/bot-context/pom.xml +++ b/bot-context/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.godfather godfather-bot - 0.0.5 + 0.0.6 bot-context diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/BoxAnswer.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/BoxAnswer.java index cf9a970..426c5c5 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/BoxAnswer.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/BoxAnswer.java @@ -1,8 +1,6 @@ package dev.struchkov.godfather.context.domain; -import dev.struchkov.godfather.context.domain.content.Message; import dev.struchkov.godfather.context.domain.keyboard.KeyBoard; -import dev.struchkov.godfather.context.service.usercode.ProcessingData; /** * Контейнер, которые содержит данные, которые будут отправлены пользователю как ответ на его запрос. @@ -11,30 +9,33 @@ import dev.struchkov.godfather.context.service.usercode.ProcessingData; */ public class BoxAnswer { + /** + * Клавиатура - меню. + */ + private final KeyBoard keyBoard; + + /** + * Флаг означающий, что надо перезаписать наше последнее отправленное сообщение, вместо отправки нового. + */ + private final boolean replace; + /** * Обычное текстовое сообщение. */ private String message; - /** - * Клавиатура - меню. - */ - private KeyBoard keyBoard; - - private boolean replace; - private BoxAnswer(Builder builder) { message = builder.message; keyBoard = builder.keyBoard; replace = builder.replace; } - public static BoxAnswer of(String message) { + public static BoxAnswer boxAnswer(String message) { return BoxAnswer.builder().message(message).build(); } - public static ProcessingData boxAnswer(String messageText) { - return message -> of(messageText); + public static BoxAnswer boxAnswer(String messageText, KeyBoard keyBoard) { + return BoxAnswer.builder().message(messageText).keyBoard(keyBoard).build(); } public static Builder builder() { @@ -66,7 +67,6 @@ public class BoxAnswer { '}'; } - public static final class Builder { private String message; private KeyBoard keyBoard; @@ -94,4 +94,5 @@ public class BoxAnswer { return new BoxAnswer(this); } } + } diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/button/SimpleButton.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/button/SimpleButton.java index bd98769..eba5ff8 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/button/SimpleButton.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/button/SimpleButton.java @@ -28,11 +28,11 @@ public class SimpleButton implements KeyBoardButton { this.callbackData = callbackData; } - public static SimpleButton of(@NotNull String label, @NotNull String callbackData) { + public static SimpleButton simpleButton(@NotNull String label, @NotNull String callbackData) { return new SimpleButton(label, callbackData); } - public static SimpleButton of(@NotNull String label) { + public static SimpleButton simpleButton(@NotNull String label) { return new SimpleButton(label, label); } diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/simple/SimpleKeyBoard.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/simple/SimpleKeyBoard.java index fc39d17..8f737d4 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/simple/SimpleKeyBoard.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/simple/SimpleKeyBoard.java @@ -29,7 +29,7 @@ public class SimpleKeyBoard implements KeyBoard { lines = builder.lines; } - public static SimpleKeyBoard single(KeyBoardLine line) { + public static SimpleKeyBoard simpleKeyboard(KeyBoardLine line) { return new SimpleKeyBoard(List.of(line)); } @@ -37,8 +37,8 @@ public class SimpleKeyBoard implements KeyBoard { return new Builder(); } - public SimpleKeyBoard single(KeyBoardButton keyBoardButton) { - return single(SimpleKeyBoardLine.single(keyBoardButton)); + public SimpleKeyBoard simpleKeyboard(KeyBoardButton keyBoardButton) { + return simpleKeyboard(SimpleKeyBoardLine.simpleLine(keyBoardButton)); } @Override diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/simple/SimpleKeyBoardLine.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/simple/SimpleKeyBoardLine.java index b55a0fe..e5c599f 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/simple/SimpleKeyBoardLine.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/keyboard/simple/SimpleKeyBoardLine.java @@ -26,7 +26,7 @@ public class SimpleKeyBoardLine implements KeyBoardLine { buttons = builder.buttons; } - public static SimpleKeyBoardLine single(KeyBoardButton keyBoardButton) { + public static SimpleKeyBoardLine simpleLine(KeyBoardButton keyBoardButton) { return new SimpleKeyBoardLine(List.of(keyBoardButton)); } diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/service/usercode/MessageFunction.java b/bot-context/src/main/java/dev/struchkov/godfather/context/service/usercode/MessageFunction.java new file mode 100644 index 0000000..2508b6a --- /dev/null +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/service/usercode/MessageFunction.java @@ -0,0 +1,10 @@ +package dev.struchkov.godfather.context.service.usercode; + +import dev.struchkov.godfather.context.domain.BoxAnswer; +import dev.struchkov.godfather.context.domain.content.Message; + +public interface MessageFunction { + + void build(M message, BoxAnswer.Builder builder); + +} diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/utils/KeyBoards.java b/bot-context/src/main/java/dev/struchkov/godfather/context/utils/KeyBoards.java index a163c4f..178c0f8 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/utils/KeyBoards.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/utils/KeyBoards.java @@ -14,8 +14,8 @@ import java.util.List; */ public class KeyBoards { - public static final SimpleButton YES_BUTTON = SimpleButton.of("Да", "{\"button\": \"yes\"}"); - public static final SimpleButton NO_BUTTON = SimpleButton.of("Нет", "{\"button\": \"no\"}"); + public static final SimpleButton YES_BUTTON = SimpleButton.simpleButton("Да", "{\"button\": \"yes\"}"); + public static final SimpleButton NO_BUTTON = SimpleButton.simpleButton("Нет", "{\"button\": \"no\"}"); private KeyBoards() { throw new IllegalStateException(); @@ -41,7 +41,7 @@ public class KeyBoards { public static SimpleKeyBoard verticalMenuString(List labelButtons) { final SimpleKeyBoard.Builder keyBoard = SimpleKeyBoard.build(); for (String labelButton : labelButtons) { - final SimpleButton simpleButton = SimpleButton.of(labelButton, "{\"button\": \"" + labelButton + "\"}"); + final SimpleButton simpleButton = SimpleButton.simpleButton(labelButton, "{\"button\": \"" + labelButton + "\"}"); keyBoard.line(SimpleKeyBoardLine.builder().button(simpleButton).build()); } return keyBoard.build(); @@ -79,7 +79,7 @@ public class KeyBoards { SimpleKeyBoardLine.Builder keyBoardLine = SimpleKeyBoardLine.builder(); for (int i = 0; i <= labelButton.size() - 1; i++) { String label = labelButton.get(i); - keyBoardLine.button(SimpleButton.of(label)); + keyBoardLine.button(SimpleButton.simpleButton(label)); if (flag) { if (i == labelButton.size() - 1) { keyBoard.line(keyBoardLine.build()); diff --git a/bot-core/pom.xml b/bot-core/pom.xml index 6f20ead..2e67d3f 100644 --- a/bot-core/pom.xml +++ b/bot-core/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.godfather godfather-bot - 0.0.5 + 0.0.6 bot-core diff --git a/bot-core/src/main/java/dev/struchkov/godfather/core/GeneralAutoResponder.java b/bot-core/src/main/java/dev/struchkov/godfather/core/GeneralAutoResponder.java index b3c8e40..c307260 100644 --- a/bot-core/src/main/java/dev/struchkov/godfather/core/GeneralAutoResponder.java +++ b/bot-core/src/main/java/dev/struchkov/godfather/core/GeneralAutoResponder.java @@ -61,7 +61,7 @@ public class GeneralAutoResponder extends TimerTask { this.modifiables = modifiables; } - protected void initActionUnit(String typeUnit, ActionUnit actionUnit) { + public void initActionUnit(String typeUnit, ActionUnit actionUnit) { if (!actionUnitMap.containsKey(typeUnit)) { actionUnitMap.put(typeUnit, actionUnit); } else { diff --git a/bot-core/src/main/java/dev/struchkov/godfather/core/domain/unit/AnswerText.java b/bot-core/src/main/java/dev/struchkov/godfather/core/domain/unit/AnswerText.java index e31220c..4d8340b 100644 --- a/bot-core/src/main/java/dev/struchkov/godfather/core/domain/unit/AnswerText.java +++ b/bot-core/src/main/java/dev/struchkov/godfather/core/domain/unit/AnswerText.java @@ -5,11 +5,13 @@ import dev.struchkov.godfather.context.domain.content.Message; import dev.struchkov.godfather.context.exception.UnitConfigException; import dev.struchkov.godfather.context.service.sender.Sending; import dev.struchkov.godfather.context.service.usercode.Insert; +import dev.struchkov.godfather.context.service.usercode.MessageFunction; import dev.struchkov.godfather.context.service.usercode.ProcessingData; import dev.struchkov.godfather.core.utils.TypeUnit; import java.util.HashSet; import java.util.Set; +import java.util.function.Consumer; import java.util.regex.Pattern; import static dev.struchkov.haiti.utils.Inspector.isNotNull; @@ -29,12 +31,12 @@ public class AnswerText extends MainUnit { /** * Информация, которую необходимо вставить вместо маркеров в строку ответа. */ - private Insert insert; + private final Insert insert; /** * Объект нестандартной отправки ответа. */ - private Sending sending; + private final Sending sending; private AnswerText(Builder builder) { super(builder.keyWords, builder.phrase, builder.pattern, builder.matchThreshold, builder.priority, builder.nextUnits, builder.activeType, TypeUnit.TEXT); @@ -76,11 +78,31 @@ public class AnswerText extends MainUnit { private UnitActiveType activeType; private Builder() { - } - public Builder boxAnswer(ProcessingData boxAnswer) { - this.boxAnswer = boxAnswer; + public Builder message(ProcessingData message) { + this.boxAnswer = message; + return this; + } + + public Builder message(MessageFunction function) { + this.boxAnswer = message -> { + final BoxAnswer.Builder builder = BoxAnswer.builder(); + function.build(message, builder); + return builder.build(); + }; + return this; + } + + public Builder boxAnswer(Consumer boxAnswer) { + final BoxAnswer.Builder boxAnswerBuilder = BoxAnswer.builder(); + boxAnswer.accept(boxAnswerBuilder); + this.boxAnswer = message -> boxAnswerBuilder.build(); + return this; + } + + public Builder boxAnswer(BoxAnswer boxAnswer) { + this.boxAnswer = message -> boxAnswer; return this; } diff --git a/bot-core/src/main/java/dev/struchkov/godfather/core/service/action/AnswerValidityAction.java b/bot-core/src/main/java/dev/struchkov/godfather/core/service/action/AnswerValidityAction.java index 702957d..01b7e99 100644 --- a/bot-core/src/main/java/dev/struchkov/godfather/core/service/action/AnswerValidityAction.java +++ b/bot-core/src/main/java/dev/struchkov/godfather/core/service/action/AnswerValidityAction.java @@ -40,7 +40,7 @@ public class AnswerValidityAction implements ActionUnit .clearKeyWords().keyWords(WORDS_YES_NO) .build(); return AnswerText.builder() - .boxAnswer(mes -> clarification.getQuestion()) + .message(mes -> clarification.getQuestion()) .nextUnit(newValidity) .build(); } diff --git a/pom.xml b/pom.xml index 45f9e1c..a96df17 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.godfather godfather-bot - 0.0.5 + 0.0.6 pom @@ -32,7 +32,7 @@ UTF-8 UTF-8 - 0.0.5 + 0.0.6 ${godfather.ver} ${godfather.ver}