Добавил InlineKeyBoards

This commit is contained in:
Struchkov Mark 2022-05-26 02:22:13 +03:00
parent 1a07d88dd9
commit ffc5b63508
5 changed files with 157 additions and 9 deletions

12
pom.xml
View File

@ -5,7 +5,7 @@
<groupId>dev.struchkov.godfather</groupId>
<artifactId>telegram-bot</artifactId>
<version>0.0.6</version>
<version>0.0.7</version>
<packaging>pom</packaging>
<modules>
@ -33,7 +33,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<godfather.core.ver>0.0.5</godfather.core.ver>
<godfather.core.ver>0.0.6</godfather.core.ver>
<telegrambots.ver>6.0.1</telegrambots.ver>
<plugin.maven.compiler.ver>3.10.1</plugin.maven.compiler.ver>
@ -142,10 +142,10 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-javadoc-plugin</artifactId>-->
<!-- </plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>dev.struchkov.godfather</groupId>
<artifactId>telegram-bot</artifactId>
<version>0.0.6</version>
<version>0.0.7</version>
</parent>
<artifactId>telegram-core</artifactId>

View File

@ -9,8 +9,8 @@ import dev.struchkov.godfather.telegram.ProxyConfig;
*/
public class TelegramPollingConfig {
private final String botUsername;
private final String botToken;
private String botUsername;
private String botToken;
private ProxyConfig proxyConfig;
@ -19,6 +19,17 @@ public class TelegramPollingConfig {
this.botToken = botToken;
}
public TelegramPollingConfig() {
}
public void setBotUsername(String botUsername) {
this.botUsername = botUsername;
}
public void setBotToken(String botToken) {
this.botToken = botToken;
}
public String getBotUsername() {
return botUsername;
}

View File

@ -22,6 +22,10 @@ public class InlineKeyBoard extends SimpleKeyBoard {
return new Builder();
}
public static InlineKeyBoard inlineKeyBoard(KeyBoardLine keyBoardLine) {
return builder().line(keyBoardLine).build();
}
@Override
public String getType() {
return TYPE;

View File

@ -0,0 +1,133 @@
package dev.struchkov.godfather.telegram.utils;
import dev.struchkov.godfather.context.domain.keyboard.KeyBoardButton;
import dev.struchkov.godfather.context.domain.keyboard.button.SimpleButton;
import dev.struchkov.godfather.context.domain.keyboard.simple.SimpleKeyBoard;
import dev.struchkov.godfather.context.domain.keyboard.simple.SimpleKeyBoardLine;
import dev.struchkov.godfather.telegram.domain.keyboard.InlineKeyBoard;
import java.util.Arrays;
import java.util.List;
import static dev.struchkov.godfather.context.domain.keyboard.button.SimpleButton.simpleButton;
import static dev.struchkov.godfather.context.domain.keyboard.simple.SimpleKeyBoardLine.simpleLine;
import static dev.struchkov.haiti.utils.Exceptions.utilityClass;
public final class InlineKeyBoards {
public static final SimpleButton YES_BUTTON = simpleButton("Да", "{\"button\": \"yes\"}");
public static final SimpleButton NO_BUTTON = simpleButton("Нет", "{\"button\": \"no\"}");
public InlineKeyBoards() {
utilityClass();
}
/**
* Возвращает клавиатуру формата 1х2, с кнопками "Да | Нет"
*
* @return {@link SimpleKeyBoard}
*/
public static InlineKeyBoard keyBoardYesNo() {
return InlineKeyBoard.inlineKeyBoard(
SimpleKeyBoardLine.builder().button(YES_BUTTON).button(NO_BUTTON).build()
);
}
/**
* Возвращает клавиатуру формата 1хN, где N - это количество элементов в переданном списке
*
* @param labelButtons Список названий для кнопок
* @return {@link SimpleKeyBoard}
*/
public static InlineKeyBoard verticalMenuString(List<String> labelButtons) {
final InlineKeyBoard.Builder keyBoard = InlineKeyBoard.builder();
for (String labelButton : labelButtons) {
keyBoard.line(simpleLine(simpleButton(labelButton, labelButton)));
}
return keyBoard.build();
}
/**
* Возвращает клавиатуру формата 1хN, где N - это количество элементов в переданном списке
*
* @param labelButton Список названий для кнопок
* @return {@link SimpleKeyBoard}
*/
public static InlineKeyBoard verticalMenuString(String... labelButton) {
return verticalMenuString(Arrays.asList(labelButton));
}
/**
* Возвращает клавиатуру формата 2х(N/2), где N - это количество элементов в переданном списке
*
* @param labelButton Список названий для кнопок
* @return {@link SimpleKeyBoard}
*/
public static InlineKeyBoard verticalDuoMenuString(String... labelButton) {
return verticalDuoMenuString(Arrays.asList(labelButton));
}
/**
* Возвращает клавиатуру формата 2х(N/2), где N - это количество элементов в переданном списке
*
* @param labelButton Список названий для кнопок
* @return {@link SimpleKeyBoard}
*/
public static InlineKeyBoard verticalDuoMenuString(List<String> labelButton) {
final InlineKeyBoard.Builder keyBoard = InlineKeyBoard.builder();
boolean flag = true;
SimpleKeyBoardLine.Builder keyBoardLine = SimpleKeyBoardLine.builder();
for (int i = 0; i <= labelButton.size() - 1; i++) {
String label = labelButton.get(i);
keyBoardLine.button(simpleButton(label));
if (flag) {
if (i == labelButton.size() - 1) {
keyBoard.line(keyBoardLine.build());
} else {
flag = false;
}
} else {
keyBoard.line(keyBoardLine.build());
keyBoardLine = SimpleKeyBoardLine.builder();
flag = true;
}
}
return keyBoard.build();
}
public static InlineKeyBoard verticalDuoMenu(KeyBoardButton... buttons) {
final InlineKeyBoard.Builder keyBoard = InlineKeyBoard.builder();
boolean flag = true;
SimpleKeyBoardLine.Builder keyBoardLine = SimpleKeyBoardLine.builder();
for (int i = 0; i <= buttons.length - 1; i++) {
keyBoardLine.button(buttons[i]);
if (flag) {
if (i == buttons.length - 1) {
keyBoard.line(keyBoardLine.build());
} else {
flag = false;
}
} else {
keyBoard.line(keyBoardLine.build());
keyBoardLine = SimpleKeyBoardLine.builder();
flag = true;
}
}
return keyBoard.build();
}
/**
* Возвращает клавиатуру формата 1xN сформированную из списка кнопок, где N - количество кнопок в списке
*
* @param simpleButtons Список кнопок
* @return {@link SimpleKeyBoard}
*/
public static InlineKeyBoard verticalMenuButton(List<KeyBoardButton> buttons) {
final InlineKeyBoard.Builder keyBoard = InlineKeyBoard.builder();
for (KeyBoardButton simpleButton : buttons) {
keyBoard.line(simpleLine(simpleButton));
}
return keyBoard.build();
}
}