From c43ba2ea8b37a969d2ed01aee41daf58657a6fff Mon Sep 17 00:00:00 2001 From: Ruslan Penkrat Date: Tue, 3 Mar 2026 13:26:14 +0300 Subject: [PATCH] Update PengradTelegramBot to improve chat ID retrieval and upgrade Telegram API version - Refactor chat ID extraction logic into a separate method for clarity and maintainability. - Handle cases where chat ID may not be accessible, logging a warning when not found. - Upgrade Telegram Bot API dependency version from 6.2.0 to 7.1.1. - Adjust BotRequestImpl to accommodate changes in chat ID retrieval logic. - Make botAtomicReference in App class final for better thread safety. --- pom.xml | 44 +++++++++++++++++-- .../main/java/ru/penkrat/stbf/demo/App.java | 2 +- stbf-pengrad/pom.xml | 2 +- .../stbf/impl/pengrad/BotRequestImpl.java | 10 ++--- .../stbf/impl/pengrad/PengradTelegramBot.java | 24 ++++++---- 5 files changed, 63 insertions(+), 19 deletions(-) diff --git a/pom.xml b/pom.xml index dbfaedb..f36714e 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 pom @@ -14,8 +15,8 @@ scm:git:https://git.penkrat.ru/ruslan/stbf.git scm:git:https://git.penkrat.ru/ruslan/stbf.git - HEAD - + HEAD + @@ -65,6 +66,43 @@ ${java.version} + + maven-source-plugin + + + attach-sources + deploy + + jar-no-fork + + + + + + maven-javadoc-plugin + + + attach-javadocs + deploy + + jar + + + + + + + maven-deploy-plugin + + + deploy + deploy + + deploy + + + + org.apache.maven.plugins maven-release-plugin diff --git a/stbf-demo/src/main/java/ru/penkrat/stbf/demo/App.java b/stbf-demo/src/main/java/ru/penkrat/stbf/demo/App.java index 0f961ac..2b661ac 100644 --- a/stbf-demo/src/main/java/ru/penkrat/stbf/demo/App.java +++ b/stbf-demo/src/main/java/ru/penkrat/stbf/demo/App.java @@ -19,7 +19,7 @@ public class App implements Runnable { private static final Logger log = LoggerFactory.getLogger(App.class); - private static AtomicReference botAtomicReference = new AtomicReference<>(); + private static final AtomicReference botAtomicReference = new AtomicReference<>(); @CommandLine.Option(names = {"-f", "--file"}, description = "The file with config.") private String flowFile = "classpath:/flow.xml"; diff --git a/stbf-pengrad/pom.xml b/stbf-pengrad/pom.xml index d6d2c74..78936b1 100644 --- a/stbf-pengrad/pom.xml +++ b/stbf-pengrad/pom.xml @@ -21,7 +21,7 @@ com.github.pengrad java-telegram-bot-api - 6.2.0 + 7.1.1 diff --git a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/BotRequestImpl.java b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/BotRequestImpl.java index 368ba0f..549dde9 100644 --- a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/BotRequestImpl.java +++ b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/BotRequestImpl.java @@ -44,18 +44,16 @@ public class BotRequestImpl implements BotRequest { @Override public Optional getCallbackMessageText() { - return Optional.of(update) - .map(Update::callbackQuery) - .map(CallbackQuery::message) - .map(Message::text); + // unsupported ? todo: check doc + return Optional.empty(); } @Override public Long getChatId() { return Optional.of(update) .map(Update::callbackQuery) - .map(CallbackQuery::message) - .orElseGet(() -> update.message()).chat().id(); + .map(CallbackQuery::maybeInaccessibleMessage) + .orElseGet(update::message).chat().id(); } @Override diff --git a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/PengradTelegramBot.java b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/PengradTelegramBot.java index 3bc599c..96c07c9 100644 --- a/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/PengradTelegramBot.java +++ b/stbf-pengrad/src/main/java/ru/penkrat/stbf/impl/pengrad/PengradTelegramBot.java @@ -2,13 +2,10 @@ package ru.penkrat.stbf.impl.pengrad; import com.pengrad.telegrambot.TelegramBot; import com.pengrad.telegrambot.UpdatesListener; -import com.pengrad.telegrambot.model.CallbackQuery; import com.pengrad.telegrambot.model.Update; import lombok.extern.slf4j.Slf4j; import ru.penkrat.stbf.api.CommandChain; -import java.util.Optional; - @Slf4j public class PengradTelegramBot extends TelegramBot implements AutoCloseable { @@ -17,11 +14,11 @@ public class PengradTelegramBot extends TelegramBot implements AutoCloseable { this.setUpdatesListener(updates -> { for (Update update : updates) { try { - final Long chatId = Optional.of(update) - .map(Update::callbackQuery) - .map(CallbackQuery::message) - .orElseGet(() -> update.message()).chat().id(); - + final Long chatId = findChatId(update); + if (chatId == null) { + log.warn("Chat not found, Update [id={}]", update.updateId()); + continue; + } log.debug("New message in chat {}", chatId); commandChain.processCommand( @@ -41,4 +38,15 @@ public class PengradTelegramBot extends TelegramBot implements AutoCloseable { log.debug("Bot closed."); } + private Long findChatId(Update update) { + if (update.callbackQuery() != null && update.callbackQuery().maybeInaccessibleMessage() != null) { + return update.callbackQuery().maybeInaccessibleMessage().chat().id(); + } + if (update.message() != null) { + return update.message().chat().id(); + } + + return null; + } + }