Рефакторинг клавиатур
This commit is contained in:
parent
89b2688e52
commit
0c3b098e55
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>dev.struchkov.godfather</groupId>
|
||||
<artifactId>godfather-bot</artifactId>
|
||||
<version>0.0.5</version>
|
||||
<version>0.0.6</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>bot-context</artifactId>
|
||||
|
@ -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 <T extends Message> ProcessingData<T> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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<M extends Message> {
|
||||
|
||||
void build(M message, BoxAnswer.Builder builder);
|
||||
|
||||
}
|
@ -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<String> 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());
|
||||
|
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>dev.struchkov.godfather</groupId>
|
||||
<artifactId>godfather-bot</artifactId>
|
||||
<version>0.0.5</version>
|
||||
<version>0.0.6</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>bot-core</artifactId>
|
||||
|
@ -61,7 +61,7 @@ public class GeneralAutoResponder<T extends Message> extends TimerTask {
|
||||
this.modifiables = modifiables;
|
||||
}
|
||||
|
||||
protected void initActionUnit(String typeUnit, ActionUnit<? super MainUnit, T> actionUnit) {
|
||||
public void initActionUnit(String typeUnit, ActionUnit<? super MainUnit, T> actionUnit) {
|
||||
if (!actionUnitMap.containsKey(typeUnit)) {
|
||||
actionUnitMap.put(typeUnit, actionUnit);
|
||||
} else {
|
||||
|
@ -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<M extends Message> extends MainUnit {
|
||||
/**
|
||||
* Информация, которую необходимо вставить вместо маркеров в строку ответа.
|
||||
*/
|
||||
private Insert insert;
|
||||
private final Insert insert;
|
||||
|
||||
/**
|
||||
* Объект нестандартной отправки ответа.
|
||||
*/
|
||||
private Sending sending;
|
||||
private final Sending sending;
|
||||
|
||||
private AnswerText(Builder<M> 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<M extends Message> extends MainUnit {
|
||||
private UnitActiveType activeType;
|
||||
|
||||
private Builder() {
|
||||
|
||||
}
|
||||
|
||||
public Builder<M> boxAnswer(ProcessingData<M> boxAnswer) {
|
||||
this.boxAnswer = boxAnswer;
|
||||
public Builder<M> message(ProcessingData<M> message) {
|
||||
this.boxAnswer = message;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder<M> message(MessageFunction<M> function) {
|
||||
this.boxAnswer = message -> {
|
||||
final BoxAnswer.Builder builder = BoxAnswer.builder();
|
||||
function.build(message, builder);
|
||||
return builder.build();
|
||||
};
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder<M> boxAnswer(Consumer<BoxAnswer.Builder> boxAnswer) {
|
||||
final BoxAnswer.Builder boxAnswerBuilder = BoxAnswer.builder();
|
||||
boxAnswer.accept(boxAnswerBuilder);
|
||||
this.boxAnswer = message -> boxAnswerBuilder.build();
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder<M> boxAnswer(BoxAnswer boxAnswer) {
|
||||
this.boxAnswer = message -> boxAnswer;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ public class AnswerValidityAction implements ActionUnit<AnswerValidity, Message>
|
||||
.clearKeyWords().keyWords(WORDS_YES_NO)
|
||||
.build();
|
||||
return AnswerText.builder()
|
||||
.boxAnswer(mes -> clarification.getQuestion())
|
||||
.message(mes -> clarification.getQuestion())
|
||||
.nextUnit(newValidity)
|
||||
.build();
|
||||
}
|
||||
|
4
pom.xml
4
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>dev.struchkov.godfather</groupId>
|
||||
<artifactId>godfather-bot</artifactId>
|
||||
<version>0.0.5</version>
|
||||
<version>0.0.6</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<modules>
|
||||
@ -32,7 +32,7 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
|
||||
<godfather.ver>0.0.5</godfather.ver>
|
||||
<godfather.ver>0.0.6</godfather.ver>
|
||||
|
||||
<godfather.context.ver>${godfather.ver}</godfather.context.ver>
|
||||
<godfather.core.ver>${godfather.ver}</godfather.core.ver>
|
||||
|
Loading…
Reference in New Issue
Block a user