diff --git a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/BotResponseImpl.java b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/BotResponseImpl.java index f1600c8..abc4ac5 100644 --- a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/BotResponseImpl.java +++ b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/BotResponseImpl.java @@ -32,7 +32,7 @@ public class BotResponseImpl implements BotResponse { public void send(Screen screen) { log.trace("Send trace: \n============\n{}\n============", screen.getText().trim()); - AbstractSendRequest sendMessage = SendMethodUtils.createFromScreen(chatId(), screen); + AbstractSendRequest> sendMessage = SendMethodUtils.createFromScreen(chatId(), screen); if (screen.getKeyboard() instanceof KeyboardImpl) { KeyboardImpl kk = (KeyboardImpl) screen.getKeyboard(); @@ -110,14 +110,14 @@ public class BotResponseImpl implements BotResponse { private Long chatId() { if (update.callbackQuery() != null) { - return update.callbackQuery().message().chat().id(); + return update.callbackQuery().maybeInaccessibleMessage().chat().id(); } return update.message().chat().id(); } private Integer messageId() { if (update.callbackQuery() != null) { - return update.callbackQuery().message().messageId(); + return update.callbackQuery().maybeInaccessibleMessage().messageId(); } return update.message().messageId(); } diff --git a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/KeyboardImpl.java b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/KeyboardImpl.java index 9ba1a60..cc27d33 100644 --- a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/KeyboardImpl.java +++ b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/KeyboardImpl.java @@ -15,11 +15,11 @@ import java.util.stream.Stream; @Value class KeyboardImpl implements Keyboard { - private KeyboardButton[][] keyboard; + KeyboardButton[][] keyboard; - private InlineKeyboardButton[][] inlineKeyboard; + InlineKeyboardButton[][] inlineKeyboard; - private Map text = new HashMap<>(); + Map text = new HashMap<>(); @Override public String toString() { diff --git a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/PengradKeyboardBuilder.java b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/PengradKeyboardBuilder.java index 549b646..19283be 100644 --- a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/PengradKeyboardBuilder.java +++ b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/PengradKeyboardBuilder.java @@ -118,9 +118,14 @@ public class PengradKeyboardBuilder implements KeyboardBuilder { private void put(Action action) { if (action.isInline()) { - put(new InlineKeyboardButton(action.getText()) - .callbackData(action.getCallbackData()) - .url(action.getUrl())); + InlineKeyboardButton inlineKeyboardButton = new InlineKeyboardButton(action.getText()); + if (action.getCallbackData() != null) { + inlineKeyboardButton.setCallbackData(action.getCallbackData()); + } + if (action.getUrl() != null) { + inlineKeyboardButton.url(action.getUrl()); + } + put(inlineKeyboardButton); } else { put(new KeyboardButton(action.getText()) .requestContact(action.isRequestContact()) diff --git a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/SendMethodUtils.java b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/SendMethodUtils.java index b585816..f3f273d 100644 --- a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/SendMethodUtils.java +++ b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/SendMethodUtils.java @@ -24,7 +24,7 @@ import java.util.function.Consumer; @UtilityClass class SendMethodUtils { - public AbstractSendRequest createFromScreen(@NonNull Object chatIdObj, @NonNull Screen screen) { + public AbstractSendRequest> createFromScreen(@NonNull Object chatIdObj, @NonNull Screen screen) { long chatId = chatIdObj instanceof Long ? (Long) chatIdObj : 0; if (isMedia(screen)) { final Media media = screen.getMedia(); @@ -80,7 +80,6 @@ class SendMethodUtils { return new SendMessage(chatId, screen.getText().trim()) .parseMode(screen.getScreenProperties().isParseModeHtml() ? ParseMode.HTML : ParseMode.MarkdownV2) .linkPreviewOptions(new LinkPreviewOptions().isDisabled(screen.getScreenProperties().isDisableWebPagePreview())) - // .disableWebPagePreview(screen.getScreenProperties().isDisableWebPagePreview()) .disableNotification(screen.getScreenProperties().isDisableNotification()); } @@ -105,8 +104,7 @@ class SendMethodUtils { } @NotNull - private SendVoice createSendVoice(@NotNull Object chatIdObj, Media media) { - long chatId = chatIdObj instanceof Long ? (Long) chatIdObj : 0; + private SendVoice createSendVoice(long chatId, Media media) { if (media.getData() != null) { return new SendVoice(chatId, media.getData().get()); } @@ -117,8 +115,7 @@ class SendMethodUtils { } @NotNull - private SendVideo createSendVideo(@NotNull Object chatIdObj, Media media) { - long chatId = chatIdObj instanceof Long ? (Long) chatIdObj : 0; + private SendVideo createSendVideo(long chatId, Media media) { if (media.getData() != null) { return new SendVideo(chatId, media.getData().get()); } @@ -129,8 +126,7 @@ class SendMethodUtils { } @NotNull - private SendAudio createSendAudio(@NotNull Object chatIdObj, Media media) { - long chatId = chatIdObj instanceof Long ? (Long) chatIdObj : 0; + private SendAudio createSendAudio(long chatId, Media media) { if (media.getData() != null) { return new SendAudio(chatId, media.getData().get()); } @@ -141,8 +137,7 @@ class SendMethodUtils { } @NotNull - private SendAnimation createSendAnimation(@NotNull Object chatIdObj, Media media) { - long chatId = chatIdObj instanceof Long ? (Long) chatIdObj : 0; + private SendAnimation createSendAnimation(long chatId, Media media) { if (media.getData() != null) { return new SendAnimation(chatId, media.getData().get()); } @@ -153,8 +148,7 @@ class SendMethodUtils { } @NotNull - private SendPhoto createSendPhoto(@NotNull Object chatIdObj, Media media) { - long chatId = chatIdObj instanceof Long ? (Long) chatIdObj : 0; + private SendPhoto createSendPhoto(long chatId, Media media) { if (media.getData() != null) { return new SendPhoto(chatId, media.getData().get()); } diff --git a/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/FlowScreenResolverDelegate.java b/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/FlowScreenResolverDelegate.java index bb04053..b6bcd20 100644 --- a/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/FlowScreenResolverDelegate.java +++ b/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/FlowScreenResolverDelegate.java @@ -83,7 +83,7 @@ class FlowScreenResolverDelegate implements ScreenResolver { if (context instanceof KeyboardProvider) { final Keyboard keyboard = ((KeyboardProvider) context).getKeyboard(); if (keyboard == null) { - log.warn("Method 'getKeyboard' returns NULL value!", wrapper.getFactoryMethod()); + log.warn("Method 'getKeyboard' {} returns NULL value!", wrapper.getFactoryMethod()); } return keyboard; } @@ -106,12 +106,12 @@ class FlowScreenResolverDelegate implements ScreenResolver { for (ButtonsRow row : wrapper.getRows()) { List buttons = row.getButtons().stream() .filter(btn -> checkIfCondition(context, btn.getIfCondition())) - .map(btn -> getAction(btn)) + .map(this::getAction) .collect(Collectors.toList()); log.info("Keyboard: {}", buttons); - builder.row(buttons.toArray(new Action[buttons.size()])); + builder.row(buttons.toArray(new Action[0])); } keyboard = builder.build();