Skip to content

Commit 4db0ca1

Browse files
committed
added morning wishes for users
1 parent 9799bab commit 4db0ca1

File tree

4 files changed

+49
-2
lines changed

4 files changed

+49
-2
lines changed

src/main/java/org/example/project/BotApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.scheduling.annotation.EnableScheduling;
56

7+
@EnableScheduling
68
@SpringBootApplication
79
public class BotApplication {
810
public static void main(String[] args) {

src/main/java/org/example/project/repository/UserRepository.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,13 @@
22

33
import org.example.project.domain.Users;
44
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
6+
7+
import java.util.List;
58

69
public interface UserRepository extends JpaRepository<Users, Long> {
710
Users findByName(String name);
811
Users findByChatId(Long chatId);
12+
@Query(value = "select * from users", nativeQuery = true)
13+
List<Users> getAllUsers();
914
}

src/main/java/org/example/project/service/TelegramBot.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import java.util.concurrent.ExecutorService;
3232
import java.util.concurrent.Executors;
3333

34+
35+
// TODO: разбить класс, тут есть функциональность которая нудна для бота, а также функциональность которая отвечает за работу с пользователями
3436
@Slf4j
3537
@Component
3638
public class TelegramBot extends TelegramLongPollingBot {
@@ -171,7 +173,6 @@ private void executeUpdate(Update update) {
171173
}
172174
}
173175

174-
// TODO: Изменить взаимодействие с ChatGPT в боте
175176
private void questionToGptReceived(long chatId, String question, String model, List<Message> messageHistory) {
176177
log.info("Sending message to ChatGPT for chatId: {}", chatId);
177178

@@ -375,7 +376,8 @@ private void startCommandReceived(long chatId, String name) {
375376
}
376377
}
377378

378-
private void sendMessage(long chatId, String textToSend) {
379+
// TODO: убрать из этого класса, так как эта функция нужна и в других классах
380+
public void sendMessage(long chatId, String textToSend) {
379381
var messages = splitString(textToSend, 4096);
380382
SendMessage sendMessage = new SendMessage();
381383
for (var message: messages) {
@@ -390,6 +392,7 @@ private void sendMessage(long chatId, String textToSend) {
390392
}
391393
}
392394

395+
// TODO: убрать из этого класса, так как эта функция нужна и в других классах
393396
private void sendMessageWithKeyboard(long chatId, String textToSend, ReplyKeyboardMarkup keyboard) {
394397
var messages = splitString(textToSend, 4096);
395398
SendMessage sendMessage = new SendMessage();
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.example.project.service.job;
2+
3+
import org.example.project.repository.UserRepository;
4+
import org.example.project.service.ChatGPTService;
5+
import org.example.project.service.TelegramBot;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.scheduling.annotation.Scheduled;
8+
import org.springframework.stereotype.Service;
9+
10+
import java.util.ArrayList;
11+
12+
@Service
13+
public class MorningWishesJob {
14+
15+
@Autowired
16+
private UserRepository userRepository;
17+
18+
@Autowired
19+
private TelegramBot telegramBot;
20+
21+
@Autowired
22+
private ChatGPTService chatGPTService;
23+
24+
private final String PROMPT = "Напиши пожелание с добрым утром. Это пожелание должно поднимать настроение и " +
25+
"настраивать на продуктивный день, оно должно быть не сильно большим, но и не сильно маленьким. " +
26+
"В ответ пришли только пожелание, без лишнего текста";
27+
28+
@Scheduled(cron = "* * 9 * * *")
29+
public void scheduleMorningWishes() {
30+
var users = userRepository.getAllUsers();
31+
32+
var message = chatGPTService.sendMessage("", PROMPT, "gpt-3.5-turbo", new ArrayList<>());
33+
for (var user: users) {
34+
telegramBot.sendMessage(user.getChatId(), message);
35+
}
36+
}
37+
}

0 commit comments

Comments
 (0)