клавиатура и коллбэк телеграм java
Всем салют.Самоучка по Java,пишу примитивного бота.Никак не получается подружится с инлайн клавой,И коллбэками. Есть грамотные люди,которые могу розъяснить толком ,что не так?Api 5.1.0,JAva 11.
Код метода onUpdateReceived и sendInlineKeyBoardMessage взят отсюда
Cтрока :
"execute(new SendMessage().setText("
СТрока :
keyboardButtonsRow1.add(newInlineKeyboardButton().setText("Fi4a").setCallbackData("CallFi4a"));
Имеет текст ошибки ниже :
Cannot invoke setChatId(Long) on the primitive type void
Строка :
return new SendMessage().setChatId(chatId).setText("Пример").setReplyMarkup(inlineKeyboardMarkup);
Текст ошибки:
The method setChatId(String) in the type SendMessage is not applicable for the arguments (long)
Пожалуйста,помогите нормально разобратся с коллбеками.Прошлый раз я на этом месте застрял и забил.Понимаю,что это несоответствие библиотек с кодом.БУду благодарен хотя бы за банальную правку кода,или того лучше,самый банальный пример с работающим коллбэком,на api 5.1.0. Так же буду благодарен за гайды,по библиотеке 5.1.0,ибо в своем большинстве,статьи в интернете устаревшие.Спасибо зарание!
Класс bot
import java.util.ArrayList;
import java.util.List;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
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.exceptions.TelegramApiException;
public class Bot extends TelegramLongPollingBot {
/**
* Метод для приема сообщений.
* @param update Содержит сообщение от пользователя.
*/
@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();
}
}
}
/**
* Метод для настройки сообщения и его отправки.
* @param chatId id чата
* @param s Строка, которую необходимот отправить в качестве сообщения.
*/
public synchronized void sendMsg(String chatId, String s) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
sendMessage.setChatId(chatId);
sendMessage.setText("Message");
try {
execute(sendMessage);
} catch (TelegramApiException e) {
System.out.println(e);
}
}
public synchronized void sendMsg1(String chatId, String s) {
SendMessage sendMessage = new SendMessage();
sendMessage.enableMarkdown(true);
sendMessage.setChatId(chatId);
sendMessage.setText("Работаю");
try {
execute(sendMessage);
} catch (TelegramApiException e) {
System.out.println(e);
}
}
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);
}
/**
* Метод возвращает имя бота, указанное при регистрации.
* @return имя бота
*/
@Override
public String getBotUsername() {
return "МойБот";
}
/**
* Метод возвращает token бота для связи с сервером Telegram
* @return token для бота
*/
@Override
public String getBotToken() {
return "token";
}
}
Code class main :
package com.poortoys.examples;
import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;
public class AppMain {
public static void main(String[] args) {
try {
TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
botsApi.registerBot(new Bot());
} catch (TelegramApiException e) {
System.out.println(e);
}
}
}