callback telegram bot java не работает

Всех приветствую. Не смог найти адекватного гайда по обработке нажатия кнопок в телеграм бот на Джава. Пришлось по чуть чуть воровать кусочки кода из разных источников. Туда-сюда,получился вот такой вот код , но ответа на коллБэк нет.Ошибка в консоли:NullPointerException. Помогите понять что не так ,в чем суть обработки колБэков,и если можно,статьи на эту тему,ибо в интернете развёрнутого пояснения не нашел.Код класса Бот ниже

public class Bot extends TelegramLongPollingBot{
 
 @Override
 public String getBotUsername() {
     return "asdzxc_bot";
 }
 

 @Override
 public String getBotToken() {
     return "token";
 }

 

 @Override
 public void onUpdateReceived(Update update) {
 String message = update.getMessage().getText();
  if(update.hasMessage()){
      if(update.getMessage().hasText()){
          if(update.getMessage().getText().equals("Hello")){
              try {
                  execute(sendInlineKeyBoardMessage(update.getMessage().getChatId()));
              } catch (TelegramApiException e) {
                  e.printStackTrace();
              }
          }
      }
  }else
 if (update.hasCallbackQuery()) {
     // Set variables
     String call_data = update.getCallbackQuery().getData();
     long message_id = update.getCallbackQuery().getMessage().getMessageId();
     long chat_id = update.getCallbackQuery().getMessage().getChatId();

     if (call_data.equals("1")) {
         String answer = "ОтработалКоллБэк";
         EditMessageText new_message = new EditMessageText()
                 .setChatId(chat_id)
                 .setMessageId(toIntExact(message_id))
                 .setText(answer);
         try {
             execute(new_message); 
            
         } catch (TelegramApiException e) {
             e.printStackTrace();
         }
     }
 }
 
 switch(message) {
 
 case("демики"):
     sendMsgDemiki(update.getMessage().getChatId().toString(), message);
         break;
 case("Демики"):
     sendMsgDemiki(update.getMessage().getChatId().toString(), message);
     break;
 case("24г"):
     sendMsgDemiki(update.getMessage().getChatId().toString(), message);
     break;
 case("владики"):
     sendMsgVladiki(update.getMessage().getChatId().toString(), message);
     break;
 case("Владики"):
     sendMsgVladiki(update.getMessage().getChatId().toString(), message);
     break;
/*  case("Inf"):
     sendMsgInf(update.getMessage().getChatId().toString(), message);
     break;
 case("inf"):
     sendMsgInf(update.getMessage().getChatId().toString(), message);
     break;
 */
 
 }
 }

 private Integer toIntExact(long message_id) {
     return (int) message_id;
   }
/**
  * Метод для настройки сообщения и его отправки.
  * @param chatId id чата
  * @param s Строка, которую необходимот отправить в качестве сообщения.
  */

 public synchronized void sendMsgDemiki(String chatId, String s) {
     SendMessage sendMessage = new SendMessage();
     sendMessage.enableMarkdown(true);
     sendMessage.setChatId(chatId);
     sendMessage.setText("Демидионы ,вас зовут! @Plumpla @NastasiaMolotkova");
     try {
         sendMessage(sendMessage);
     } catch (TelegramApiException e) {
         e.printStackTrace();
     }
     
 }
 
 public synchronized void sendMsgVladiki(String chatId, String s) {
     SendMessage sendMessage = new SendMessage();
     sendMessage.enableMarkdown(true);
     sendMessage.setChatId(chatId);
     sendMessage.setText("AGHTUNGH @ZhekaRoyzman @TolyaOdessit");
     try {
         sendMessage(sendMessage);
     } catch (TelegramApiException e) {
         e.printStackTrace();
     }
   
 }

 public static SendMessage sendInlineKeyBoardMessage(long chatId) {
     InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup();
     InlineKeyboardButton inlineKeyboardButton1 = new InlineKeyboardButton();
     InlineKeyboardButton inlineKeyboardButton2 = new InlineKeyboardButton();
     inlineKeyboardButton1.setText("Тыk");
     inlineKeyboardButton1.setCallbackData("1");
     inlineKeyboardButton2.setText("Тык2");
     inlineKeyboardButton2.setCallbackData("Button \"Тык2\" has been pressed");
     List<InlineKeyboardButton> keyboardButtonsRow1 = new ArrayList<>();
     List<InlineKeyboardButton> keyboardButtonsRow2 = new ArrayList<>();
     keyboardButtonsRow1.add(inlineKeyboardButton1);
    keyboardButtonsRow1.add(new InlineKeyboardButton().setText("Fi4a").setCallbackData("CallFi4a"));
     keyboardButtonsRow2.add(inlineKeyboardButton2);
     List<List<InlineKeyboardButton>> rowList = new ArrayList<>();
     rowList.add(keyboardButtonsRow1);
     rowList.add(keyboardButtonsRow2);
     inlineKeyboardMarkup.setKeyboard(rowList);
     return new SendMessage().setChatId(chatId).setText("Пример").setReplyMarkup(inlineKeyboardMarkup);
    }

 
 

}

В консоли следующая ошибка :

янв. 28, 2021 1:20:06 PM org.telegram.telegrambots.logging.BotLogger severe
SEVERE: BOTSESSION
java.lang.NullPointerException
    at bot.SBKbot.Bot.onUpdateReceived(Bot.java:35)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
    at org.telegram.telegrambots.generics.LongPollingBot.onUpdatesReceived(LongPollingBot.java:27)
    at org.telegram.telegrambots.updatesreceivers.DefaultBotSession$HandlerThread.run(DefaultBotSession.java:306)

Как правильно обрабатывать каллБэк?В чём суть этого процеса,что у меня не правильно.и если кто то знает хорошие статьи на эту тему,буду очень благодарен за содействие.Спасибо зарание!


Ответы (1 шт):

Автор решения: MR.Kay

если 35 строка это

String message = update.getMessage().getText();

то, возможно, в сообщении, которое гетапдейт обрабатывает нет текста.

→ Ссылка