рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯреНрд╕ рдореЗрдВ рдЗрдирд▓рд╛рдЗрдирдХреЗрдмреЛрд░реНрдб

InlineKeyboard - рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреАрдмреЛрд░реНрдб рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреЙрд▓рдмреИрдХ (CallbackQuery) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рд╕рдВрджреЗрд╢ рд╕реЗ рдЬреБрдбрд╝рд╛ рдПрдХ рдХреАрдмреЛрд░реНрдбред

рдЙрджрд╛рд╣рд░рдг





рдмреЙрдЯ рд╡рд╛рдпрд░рдлреНрд░реЗрдо рдмрдирд╛рдирд╛


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдорд╛рд╡реЗрди рдкрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ рдФрд░ " рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯреНрд╕ " рднрдВрдбрд╛рд░ рдЬреЛрдбрд╝реЗрдВ:

<dependency> <groupId>org.telegram</groupId> <artifactId>telegrambots</artifactId> <version>4.0.0</version> </dependency> 

рдмреЛрдЯрдлрд╝рд╛рджрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдмреЙрдЯ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ рдФрд░ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

рд╕реНрдХреНрд░реАрди



рдЗрд╕рдХреЗ рдмрд╛рдж, рдЯреЗрд▓реАрдЧреНрд░рд╛рдорд▓реЙрдиреНрдЧ рдХреЙрд▓рд┐рдВрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдмреЙрдЯ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ, рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ:

рд╕реНрд░реЛрдд рдХреЛрдб
 import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.api.objects.Update; public class Bot extends TelegramLongPollingBot { @Override public void onUpdateReceived(Update update) { } @Override public String getBotUsername() { return null; } @Override public String getBotToken() { return null; } } 


рд╣рдо рдмреЙрдЯ рдирд╛рдо рдФрд░ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдЪрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, getBotUsername () рдкрджреНрдзрддрд┐ рдореЗрдВ botUserName рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ getBotToken () рдореЗрдВ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдореЗрдВ, рдмреЙрдЯ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ:

рд╕реНрд░реЛрдд рдХреЛрдб
 import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.api.objects.Update; import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; public class Bot extends TelegramLongPollingBot { private static final String botUserName = "Habr_Inlinebot"; private static final String token = "632072575:AAG5YNl9tM9MJbnP5HwLB22rVzNCmY05MQI"; public static void main(String[] args) { ApiContextInitializer.init(); TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); try { telegramBotsApi.registerBot(new Bot()); } catch (TelegramApiRequestException e) { e.printStackTrace(); } } @Override public void onUpdateReceived(Update update) { } @Override public String getBotUsername() { return botUserName; } @Override public String getBotToken() { return token; } } 


рдмреЙрдЯ рдХрд╛ рдлреНрд░реЗрдо рддреИрдпрд╛рд░ рд╣реИ! рдЕрдм рдЗрдирд▓рд╛рдЗрдирдХреЗрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рдЗрдирд▓рд╛рдЗрдирдХреЗрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рдПрдХ рдХреАрдмреЛрд░реНрдб рд▓реЗрдЖрдЙрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:

  InlineKeyboardMarkup inlineKeyboardMarkup =new InlineKeyboardMarkup(); 

рдЕрдм рд╣рдо рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред

рд╣рдо рдПрдХ InlineKeyboardButton рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ 2 рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ: рдЯреЗрдХреНрд╕реНрдЯ (рдЬреЛ рдмрдЯрди рдкрд░ рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛) рдФрд░ CallBackData (рдмрдЯрди рдХреНрд▓рд┐рдХ рд╣реЛрдиреЗ рдкрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрдпрд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛)ред

  InlineKeyboardButton inlineKeyboardButton = new InlineKeyboardButton(); inlineKeyboardButton.setText(""); inlineKeyboardButton.setCallbackData("Button \"\" has been pressed"); 

рдЗрд╕реЗ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

  List<InlineKeyboardButton> keyboardButtonsRow1 = new ArrayList<>(); keyboardButtons.add(inlineKeyboardButton); 

рдпрджрд┐ рдЖрдк рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдПрдХ рдФрд░ рд╕реВрдЪреА рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдирдП рдмрдЯрди рдЬреЛрдбрд╝реЗрдВред

  List<InlineKeyboardButton> keyboardButtonsRow2 = new ArrayList<>(); keyboardButtons.add(inlineKeyboardButton2); 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХрдЬреБрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВред

 List<List<InlineKeyboardButton>> rowList= new ArrayList<>(); rowList.add(keyboardButtonsRow1); rowList.add(keyboardButtonsRow2); 

рд╕реБрд╡рд┐рдзрд╛
рдбреЗрд╡рд▓рдкрд░ рдиреЗ рд╣рдорд╛рд░реА рджреЗрдЦрднрд╛рд▓ рдХреА рдФрд░ рд╣рдо рдПрдХ рдЪрд░ рдмрдирд╛рдП рдмрд┐рдирд╛ рд╕реВрдЪреА рдореЗрдВ рддреБрд░рдВрдд рдмрдЯрди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

 keyboardButtonsRow1.add(new InlineKeyboardButton().setText("Fi4a") .setCallbackData("CallFi4a")); 

рдЕрдм рд╣рдо рдХреАрдмреЛрд░реНрдб рд▓реЗрдЖрдЙрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрдЯрди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  inlineKeyboardMarkup.setKeyboard(rowList); 

рдпрджрд┐ рдХреАрдмреЛрд░реНрдб рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдБ рдПрдХ рдЪрд┐рддреНрд░ рд╣реИ:


рд╡рд╣ рд╕рдм рд╣реИ! рдЕрдм рд╕рдВрджреЗрд╢ рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рдЬреЛрдбрд╝реЗрдВ:

  SendMessage message = new SendMessage().setChatId(chatId).setText("") .setReplyMarkup(inlineKeyboardMarkup); 

рдЕрдм рд╣рдо рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░ рд╡рд┐рдзрд┐ рд╣реИ:

рд╕реНрд░реЛрдд рдХреЛрдб
 public static SendMessage sendInlineKeyBoardMessage(long chatId) { InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); InlineKeyboardButton inlineKeyboardButton1 = new InlineKeyboardButton(); InlineKeyboardButton inlineKeyboardButton2 = new InlineKeyboardButton(); inlineKeyboardButton1.setText(""); inlineKeyboardButton1.setCallbackData("Button \"\" has been pressed"); 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); } 


рд╣рдо рдПрдХ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрдм рд╡рд┐рдзрд┐ onUpdateReceived рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдХреЙрд▓ рдХреА рдЬрд╛рдПрдЧреА:

рд╕реНрд░реЛрдд рдХреЛрдб
  @Override public void onUpdateReceived(Update update) { if(update.hasMessage()){ if(update.getMessage().hasText()){ if(update.getMessage().getText().equals("Hello")){ try { execute(sendInlineKeyBoardMessage(update.getMessage().getChatId())); } catch (TelegramApiException e) { e.printStackTrace(); } } } } } 


рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ!



рдЕрдм рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдореЗрдВ рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ CallbackQuery рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

рд╕реНрд░реЛрдд рдХреЛрдб
  @Override public void onUpdateReceived(Update update) { 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()){ try { execute(new SendMessage().setText( update.getCallbackQuery().getData()) .setChatId(update.getCallbackQuery().getMessage().getChatId())); } catch (TelegramApiException e) { e.printStackTrace(); } } } 


рджреЗрдЦреЗрдВ!



рд╢рд╛рдпрдж рдпрд╣реА рд╕рдм рд╣реИ, рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!


рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб:

рдкреВрд░рд╛ рдХреЛрдб
 import org.telegram.telegrambots.ApiContextInitializer; import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.ApiContext; import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.buttons.InlineKeyboardButton; import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardButton; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException; import java.util.ArrayList; import java.util.List; public class Bot extends TelegramLongPollingBot { private static final String botUserName = "Habr_Inlinebot"; private static final String token = "632072575:AAG5YNl9tM9MJbnP5HwLB22rVzNCmY05MQI"; public static void main(String[] args) { ApiContextInitializer.init(); TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); try { telegramBotsApi.registerBot(new Bot()); } catch (TelegramApiRequestException e) { e.printStackTrace(); } } @Override public void onUpdateReceived(Update update) { 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()){ try { execute(new SendMessage().setText( update.getCallbackQuery().getData()) .setChatId(update.getCallbackQuery().getMessage().getChatId())); } catch (TelegramApiException e) { e.printStackTrace(); } } } @Override public String getBotUsername() { return botUserName; } @Override public String getBotToken() { return token; } public static SendMessage sendInlineKeyBoardMessage(long chatId) { InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); InlineKeyboardButton inlineKeyboardButton1 = new InlineKeyboardButton(); InlineKeyboardButton inlineKeyboardButton2 = new InlineKeyboardButton(); inlineKeyboardButton1.setText(""); inlineKeyboardButton1.setCallbackData("Button \"\" has been pressed"); 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); } } 


Source: https://habr.com/ru/post/hi418905/


All Articles