Не врублюсь как сделать многоуровневое меню inlineKeybords на JAVA в Telegram. Пытался добавлять условия и по callbackQuery, и по getMessage. Результат один, проверка не проходит и меню не открывается. Весь гугл перерыл. Есть такие туториалы на Pyton, но в питоне я даже синтаксиса не знаю.
import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboardMarkup;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardButton;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardRow;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
import java.util.ArrayList;
import java.util.List;
public class Bot extends TelegramLongPollingBot {
public static void main(String[] args) {
System.out.println("бот стартанул");
disableWarning();
ApiContextInitializer.init();
TelegramBotsApi botsApi = new TelegramBotsApi();
try {
botsApi.registerBot(new Bot());
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public String getBotUsername() {
return "BotName";
//возвращаем юзера
}
public void onUpdateReceived(Update update) {
if (update.hasMessage()) {
// Message msg = update.getMessage(); // Это нам понадобится
// String txt = msg.getText();
if (update.getMessage().hasText()) {
if (update.getMessage().getText().equals("/start")) {
sendMsg(update.getMessage(), "Hello, world! This is simple bot!");
try {
execute(sendInlineKeyBoardMessage(update.getMessage().getChatId()));
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
// } else if (update.getMessage().getText().equals("Алтайский край")) {
// try {
// execute(sendCityOfStateMenuAltay(update.getMessage().getChatId()));
// } catch (TelegramApiException e) {
// e.printStackTrace();
// }
// }
// else if (update.getCallbackQuery().getMessage().getText().equals("/Алтайский край")) {
// try {
// execute(sendCityOfStateMenuAltay(update.getMessage().getChatId()));
// } catch (TelegramApiException e) {
// e.printStackTrace();
// }
// }
}
} else if (update.hasCallbackQuery()) {
// try {
// execute(sendMsg(update.getMessage());
// } catch (Exception e) {
// e.printStackTrace();
// }
// if (update.getCallbackQuery().getData().equals("Алтайский край")) {
try {
execute(new SendMessage().setText(
update.getCallbackQuery().getData())
.setChatId(update.getCallbackQuery().getMessage().getChatId()));
} catch (TelegramApiException e) {
e.printStackTrace();
}
// }
}
}
@Override
public String getBotToken() {
return "";
}
private void sendMsg(Message msg, String text) {
SendMessage s = new SendMessage();
s.setChatId(msg.getChatId());
s.setText(text);
try {
execute(s);
} 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("Алтайский край");
inlineKeyboardButton1.setCallbackData("Алтайский край");
inlineKeyboardButton2.setText("Амурская область");
inlineKeyboardButton2.setCallbackData("Амурская область");
List<InlineKeyboardButton> keyboardButtonsRow1 = new ArrayList<>();
List<InlineKeyboardButton> keyboardButtonsRow2 = new ArrayList<>();
keyboardButtonsRow1.add(inlineKeyboardButton1);
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);
}
public static SendMessage sendCityOfStateMenuAltay(long chatId) {
InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup();
InlineKeyboardButton inlineKeyboardButton1 = new InlineKeyboardButton();
InlineKeyboardButton inlineKeyboardButton2 = new InlineKeyboardButton();
inlineKeyboardButton1.setText("Барнаул");
inlineKeyboardButton1.setCallbackData("Барнаул");
inlineKeyboardButton2.setText("Бийск");
inlineKeyboardButton2.setCallbackData("Бийск");
List<InlineKeyboardButton> keyboardButtonsRow1 = new ArrayList<>();
List<InlineKeyboardButton> keyboardButtonsRow2 = new ArrayList<>();
keyboardButtonsRow1.add(inlineKeyboardButton1);
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);
}
public static void disableWarning() {
System.err.close();
System.setErr(System.out);
}
}