Создать кнопки меню TelegramBot горизонтально одна за другой
Я пытаюсь создать меню, чтобы после ввода команды /start бот отправлял в чат меню в виде кнопок расположенных горизонтально и одна под другой. У меня пока получается не совсем то, что я хочу сделать
Вот мой код:
private void sendMenu(long chatId){
logger.info("Method sendMessage has been run: {}, {}", chatId, TelegramBotUpdatesListener.GREETINGS_MESSAGE);
/*InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup();
inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Узнать информацию о приюте"));
inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Как взять собаку из приюта"));
inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Прислать отчет о питомце"));
inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Позвать волонтера"));*/
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(
new KeyboardButton("Узнать информацию о приюте"),
new KeyboardButton("Как взять собаку из приюта"),
new KeyboardButton("Прислать отчет о питомце"),
new KeyboardButton("Позвать волонтера"));
replyKeyboardMarkup.resizeKeyboard(true);
replyKeyboardMarkup.oneTimeKeyboard(false);
replyKeyboardMarkup.selective(false);
SendMessage request = new SendMessage(chatId, TelegramBotUpdatesListener.GREETINGS_MESSAGE)
.replyMarkup(replyKeyboardMarkup)
.parseMode(ParseMode.HTML)
.disableWebPagePreview(true);
SendResponse sendResponse = telegramBot.execute(request);
if (!sendResponse.isOk()){
int codeError = sendResponse.errorCode();
String description = sendResponse.description();
logger.info("code of error: {}", codeError);
logger.info("description -: {}", description);
}
}
А вот что получается:
Подскажите как сделать, чтобы эти кнопки были над строкой ввода и шли горизонтально одна под другой ?
Ответы (1 шт):
Автор решения: Agzam
→ Ссылка
Код:
answer это class SendMessage
// Создаем клавиуатуру
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
answer.setReplyMarkup(replyKeyboardMarkup);
replyKeyboardMarkup.setSelective(false);
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(false);
// Создаем список строк клавиатуры
List<KeyboardRow> keyboard = new ArrayList<KeyboardRow>();
// Первая строчка клавиатуры
KeyboardRow keyboardFirstRow = new KeyboardRow();
// Добавляем кнопки в первую строчку клавиатуры
keyboardFirstRow.add("Текст 1");
keyboardFirstRow.add("Текст 2");
KeyboardRow keyboard2Row = new KeyboardRow();
// Добавляем кнопки во вторую строчку клавиатуры
keyboard2Row.add("Текст 3");
keyboard2Row.add("Текст 4");
keyboard2Row.add("Текст 5");
// Добавляем все строчки клавиатуры в список
keyboard.add(keyboardFirstRow);
keyboard.add(keyboard2Row);
// добавляем список клавиатуре
replyKeyboardMarkup.setKeyboard(keyboard);

