Files
TelegaBot/src/main/java/ru/cathub/telegabot/service/impl/BookReminderScheduler.java
T
2025-02-17 18:06:07 +03:00

48 lines
1.8 KiB
Java

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);
}
};
}
}