Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Java разработка. Телеграм бот.

Artur Zubkov Ученик (100), на голосовании 1 год назад
Привет всем, кто читает. Подскажите, пожалуйста, знатоки! Передо мной стоит такая задача:
1) После воода /start в чате должна появиться Inline клавиатура.
2) После нажатия на любую из кнопок Inline клавиатуры она должна замениться на другую inline клавиатуру. Как реализовать подобное? Бьюсь третий день, не могу понять. Очень буду благодарен если поможете!
Голосование за лучший ответ
Татьяна Просветленный (36374) 1 год назад
Для реализации данной задачи вам необходимо использовать InlineKeyboardMarkup и методы класса SendMessage из библиотеки TelegramBots. Вот пример кода на Java, который реализует данную задачу:
 public class MyBot extends TelegramLongPollingBot { 

@Override
public void onUpdateReceived(Update update) {
if (update.hasMessage() && update.getMessage().hasText()) {
String messageText = update.getMessage().getText();
long chatId = update.getMessage().getChatId();

if (messageText.equals("/start")) {
// Создаем первую inline клавиатуру
InlineKeyboardMarkup keyboardMarkup = new InlineKeyboardMarkup();
List> keyboard = new ArrayList<>();
List row = new ArrayList<>();
row.add(new InlineKeyboardButton().setText("Кнопка 1").setCallbackData("button1"));
row.add(new InlineKeyboardButton().setText("Кнопка 2").setCallbackData("button2"));
keyboard.add(row);
keyboardMarkup.setKeyboard(keyboard);

SendMessage message = new SendMessage()
.setChatId(chatId)
.setText("Выберите кнопку:")
.setReplyMarkup(keyboardMarkup);

try {
execute(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
} else if (update.hasCallbackQuery()) {
String callbackData = update.getCallbackQuery().getData();
long chatId = update.getCallbackQuery().getMessage().getChatId();

if (callbackData.equals("button1")) {
// Создаем вторую inline клавиатуру
InlineKeyboardMarkup keyboardMarkup = new InlineKeyboardMarkup();
List> keyboard = new ArrayList<>();
List row = new ArrayList<>();
row.add(new InlineKeyboardButton().setText("Кнопка 3").setCallbackData("button3"));
row.add(new InlineKeyboardButton().setText("Кнопка 4").setCallbackData("button4"));
keyboard.add(row);
keyboardMarkup.setKeyboard(keyboard);

EditMessageReplyMarkup editMessageReplyMarkup = new EditMessageReplyMarkup()
.setChatId(chatId)
.setMessageId(update.getCallbackQuery().getMessage().getMessageId())
.setReplyMarkup(keyboardMarkup);

try {
execute(editMessageReplyMarkup);
} catch (TelegramApiException e) {
e.printStackTrace();
}
} else if (callbackData.equals("button2")) {
// Действия при нажатии на кнопку 2
} else if (callbackData.equals("button3")) {
// Действия при нажатии на кнопку 3
} else if (callbackData.equals("button4")) {
// Действия при нажатии на кнопку 4
}
}
}

@Override
public String getBotUsername() {
return "my_bot";
}

@Override
public String getBotToken() {
return "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}
}
Artur ZubkovУченик (100) 1 год назад
Сейчас попробую!
Artur ZubkovУченик (100) 1 год назад
Это что, текст из ChatGPT? Эта ерунда не работает. Несколько методов попросту не существуют
Похожие вопросы