Ошибка синтаксиса Java: Required type: GetUpdates Provided: void
Хотел написать простенький телеграм бот, но столкнулся с ошибкой. У меня есть метод waitUserInput(), который ждет ответа пользователя и возвращает строку с тем, что ввел пользователь. Но в коде есть 1 ошибка, которую я никак не могу исправить.
public String waitUserInput() {
TelegramBot bot = new TelegramBot();
String userInput = "";
int lastUpdateId = 0; // переменная для хранения идентификатора последнего обновления
while (true) {
List<Update> updates = new ArrayList<>();
try {
GetUpdates getUpdates = new GetUpdates().setOffset(lastUpdateId + 1);
updates = bot.execute(getUpdates);
} catch (TelegramApiException e) {
e.printStackTrace();
}
for (Update update : updates) {
if (update.hasMessage() && update.getMessage().hasText()) {
userInput = update.getMessage().getText();
lastUpdateId = update.getUpdateId(); // обновляем значение идентификатора последнего обновления
}
}
if (!userInput.isEmpty()) {
break;
}
try {
Thread.sleep(1000); // ждем 1 секунду перед повторной проверкой наличия новых сообщений
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return userInput;
}
А именно в строке
GetUpdates getUpdates = new GetUpdates().setOffset(lastUpdateId + 1);
возникает ошибка
Required type: GetUpdates
Provided: void
Помогите пожалуйста.
Ответы (1 шт):
Автор решения: Byb
→ Ссылка
Видимо, в том API, которым вы пользуетесь, метод setOffset() класса GetUpdates ничего не возвращает, то есть, возвращаемым типом имеет void.
Вы вызываете его, и результат (void!) пытаетесь присвоить переменной типа GetUpdates, поэтому и возникает ошибка.
То, что вы делаете, нужно разделить на две строки, чтобы всё работало так, как ожидается:
GetUpdates getUpdates = new GetUpdates();
getUpdates.setOffset(lastUpdateId + 1);