package ru.mike.downloaderbot; import com.pengrad.telegrambot.TelegramBot; import com.pengrad.telegrambot.UpdatesListener; import com.pengrad.telegrambot.model.Update; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import ru.mike.downloaderbot.processor.updatetype.UpdateTypeProcessor; import java.util.List; import java.util.Optional; @Slf4j @Component public class UpdateProcessor { @Autowired private TelegramBot telegramBot; @Autowired private List updateTypeProcessors; public void processUpdates() { telegramBot.setUpdatesListener(updates -> { for (Update update : updates) { Optional updateTypeProcessorOpt = updateTypeProcessors.stream() .filter(p -> p.isSuitableProcessor(update)) .findFirst(); if (updateTypeProcessorOpt.isPresent()) { updateTypeProcessorOpt.get().process(update); } else { log.warn("Unable to find suitable updateTypeProcessor. Update:{}", update); } } return UpdatesListener.CONFIRMED_UPDATES_ALL; }, e -> { if (e.response() != null) { // Ошибка из Телеграма e.response().errorCode(); e.response().description(); } else { // Как видно проблема сети e.printStackTrace(); } }); } }