telegram bot на java. Проблема с обработкой кнопок внутри кнопок
Начал изучать java. Решил начать с проектов попроще, поэтому мой выбор пал на тг ботов. Проблема такая: есть основное меню с основными кнопками. Как правило,при нажатии на кнопку бот выполняет какое то действие и снова устанавливает основные кнопки. Но есть кнопка ИГРА. По задумке пользователь на неё нажимает и устанавливается внутренняя клавиатура со своим обработчиком. Но проблема в том,что при нажатии на основную кнопку "игра",в message сохраняется как раз таки это слово,что делает невозможным адекватно обработать внутренние кнопки. Ведь код входит в обработчик внутренних кнопок именно с этим значением, пролетает case,не находит совпадений и снова возвращается к обработчику основных кнопок. Подскажите,пожалуйста, как сделать,чтоб при нажатии на основную кнопку "игра" код оставался в обработчике внутренних кнопок,принимал и передавал новый message до тех пор,пока не нажать на внутреннюю кнопку "выход"? Спасибо!
ОСНОВНЫЕ КНОПКИ
public void onUpdateReceived(@NotNull Update update) {
Message message = update.getMessage();
if(message != null && message.hasText()){
switch (message.getText()){
case "КАРТИНКА":
sendPhoto(message, new InputFile(randomPicture())));
break;
case "ЧАТ":
sendMsg(message, chat(message));
break;
case "ИГРА":
sendMsgPlay(message, "камень ножницы бумага");
playUpdateReceived(message);
break;
ВНУТРЕННЯЯ КЛАВИАТУРА ДЛЯ ИГРЫ
public void setGameButtons(SendMessage sendMessage){
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
sendMessage.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(true);
replyKeyboardMarkup.getResizeKeyboard();
replyKeyboardMarkup.setOneTimeKeyboard(false);
List<KeyboardRow> keyboardRowList = new ArrayList<>();
KeyboardRow keyboardFirstRow = new KeyboardRow();
KeyboardRow keyboardSecondRow = new KeyboardRow();
keyboardFirstRow.add(new KeyboardButton("\uD83D\uDC8E"));
keyboardFirstRow.add(new KeyboardButton("✂️"));
keyboardFirstRow.add(new KeyboardButton("\uD83D\uDCDC"));
keyboardSecondRow.add(new KeyboardButton("ВЫЙТИ"));
keyboardRowList.add(keyboardFirstRow);
keyboardRowList.add(keyboardSecondRow);
replyKeyboardMarkup.setKeyboard(keyboardRowList);
}
ПРИКРЕПЛЯЕМ ЭТИ КНОПКИ К СООБЩЕНИЮ
public void sendMsgPlay(Message message, String text){
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
sendMessage.setChatId(message.getChatId().toString());
sendMessage.setText(text);
try{
setGameButtons(sendMessage);
execute(sendMessage);
}
catch (TelegramApiException e){
e.printStackTrace();
}
}
ОБРАБОТЧИК ВНУТРЕННИХ КНОПОК ДЛЯ ИГРЫ
public void playUpdateReceived(Message message) {
if(message!=null && message.hasText()) {
switch (message.getText()) {
case "\uD83D\uDC8E":
case "\uD83D\uDCDC":
case "✂️":
try {
execute(SendMessage.builder().chatId(message.getChatId()).text(randomSticker()).build());
} catch (TelegramApiException e) {
e.printStackTrace();
}
//здесь должен быть обработчик правил игры(выиграл, проиграл либо ничья)
break;
case "ВЫХОД":
sendMsg(message, "Выбери кнопку!");
default:
sendMsgPlay(message, "выбери кнопку!");
}
}