package ru.cathub.telegabot.service.impl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jobrunr.jobs.annotations.Recurring; import org.jobrunr.scheduling.cron.Cron; import org.springframework.stereotype.Service; import ru.cathub.telegabot.model.BotUser; import ru.cathub.telegabot.model.TextRole; import ru.cathub.telegabot.repository.UserRepository; import ru.cathub.telegabot.service.OpenRouterService; import ru.cathub.telegabot.service.TelegramClientService; import ru.cathub.telegabot.utils.BookFormatUtils; import java.sql.Date; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.List; import static ru.cathub.telegabot.utils.BookFormatUtils.escapeNonMarkdown; @Service @RequiredArgsConstructor @Slf4j public class BookReminderScheduler { private final UserRepository userRepository; private final TelegramClientService telegramClientService; private final OpenRouterService openRouterService; @Recurring(cron = "0 0 18 * * *", id = "book-reminder") public void checkReadingActivity() { Date weekAgo = new Date( Instant.now().minus(7, ChronoUnit.DAYS) .toEpochMilli() ); for (var user : userRepository.findUsersNeedingReminder(weekAgo)) { try { String prompt = "Придумай креативное и мотивирующее напоминание о том, что пользователь давно не читал книг"; String congrat = openRouterService.getChatResponse(prompt, TextRole.DEFAULT); telegramClientService.sendMessageWithMarkdown(user, escapeNonMarkdown(congrat)); } catch (Exception e) { log.error("Error sending reminder to user {}", user.getId(), e); } }; } }