Skip to content

Commit 9799bab

Browse files
committed
added multithreding for bot
1 parent af0fc28 commit 9799bab

File tree

9 files changed

+304
-29
lines changed

9 files changed

+304
-29
lines changed

docker-compose.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,11 @@ services:
3939
- "8080:8080"
4040
restart: unless-stopped
4141

42+
leetcode:
43+
image: alfaarghya/alfa-leetcode-api:2.0.1
44+
container_name: leetcode
45+
ports:
46+
- "3000:3000"
47+
4248
volumes:
4349
postgres_data:

localdev/docker-compose.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
version: '3.8'
2+
3+
services:
4+
postgres:
5+
image: postgres:15
6+
container_name: postgres
7+
environment:
8+
POSTGRES_USER: app_user
9+
POSTGRES_PASSWORD: secretpass
10+
POSTGRES_DB: app_db
11+
ports:
12+
- "5433:5432"
13+
volumes:
14+
- postgres_data:/var/lib/postgresql/data
15+
healthcheck:
16+
test: ["CMD-SHELL", "pg_isready -U app_user -d app_db"]
17+
interval: 5s
18+
timeout: 5s
19+
retries: 5
20+
21+
leetcode:
22+
image: alfaarghya/alfa-leetcode-api:2.0.1
23+
container_name: leetcode
24+
ports:
25+
- "3000:3000"
26+
27+
volumes:
28+
postgres_data:
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.example.project.data;
2+
3+
import com.plexpt.chatgpt.entity.chat.Message;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
import org.example.project.service.DialogMode;
8+
9+
import java.util.ArrayList;
10+
11+
@Data
12+
@AllArgsConstructor
13+
@NoArgsConstructor
14+
public class UserSession {
15+
private DialogMode dialogMode;
16+
private String gptVersion;
17+
private ArrayList<Message> messageHistory;
18+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.example.project.domain;
2+
3+
import jakarta.persistence.*;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
@Entity
10+
@Data
11+
@NoArgsConstructor
12+
@AllArgsConstructor
13+
@Builder
14+
public class ChatGptMessages {
15+
@Id
16+
@GeneratedValue(strategy = GenerationType.IDENTITY)
17+
private Long id;
18+
19+
@Column(length = 5000)
20+
private String question;
21+
22+
@Column(length = 5000)
23+
private String answer;
24+
25+
private Long userId;
26+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.example.project.repository;
2+
3+
import org.example.project.domain.ChatGptMessages;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface ChatGptMessagesRepository extends JpaRepository<ChatGptMessages, Long> {
9+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package org.example.project.service;
2+
3+
import org.springframework.stereotype.Service;
4+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboardMarkup;
5+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardButton;
6+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardRow;
7+
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
@Service
12+
public class BotKeyboard {
13+
public ReplyKeyboardMarkup createMainMenuKeyboard() {
14+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
15+
List<KeyboardRow> keyboard = new ArrayList<>();
16+
17+
// Первая строка кнопок
18+
KeyboardRow row1 = new KeyboardRow();
19+
row1.add(KeyboardButton.builder()
20+
.text("contact")
21+
.requestContact(true)
22+
.build());
23+
row1.add(new KeyboardButton("Настройки"));
24+
25+
// Вторая строка кнопок
26+
KeyboardRow row2 = new KeyboardRow();
27+
row2.add(new KeyboardButton("Мой профиль"));
28+
row2.add(new KeyboardButton("Контакты"));
29+
30+
keyboard.add(row1);
31+
keyboard.add(row2);
32+
33+
keyboardMarkup.setKeyboard(keyboard);
34+
keyboardMarkup.setResizeKeyboard(true);
35+
keyboardMarkup.setOneTimeKeyboard(true);
36+
37+
return keyboardMarkup;
38+
}
39+
40+
public ReplyKeyboardMarkup createGptVersionKeyboard() {
41+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
42+
List<KeyboardRow> keyboard = new ArrayList<>();
43+
44+
KeyboardRow row1 = new KeyboardRow();
45+
row1.add(new KeyboardButton("1"));
46+
row1.add(new KeyboardButton("2"));
47+
48+
KeyboardRow row2 = new KeyboardRow();
49+
row2.add(new KeyboardButton("3"));
50+
row2.add(new KeyboardButton("4"));
51+
52+
keyboard.add(row1);
53+
keyboard.add(row2);
54+
55+
keyboardMarkup.setKeyboard(keyboard);
56+
keyboardMarkup.setResizeKeyboard(true);
57+
keyboardMarkup.setOneTimeKeyboard(true);
58+
59+
return keyboardMarkup;
60+
}
61+
62+
public ReplyKeyboardMarkup createGptKeyboard() {
63+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
64+
List<KeyboardRow> keyboard = new ArrayList<>();
65+
66+
KeyboardRow row1 = new KeyboardRow();
67+
row1.add(new KeyboardButton("Exit"));
68+
69+
keyboard.add(row1);
70+
71+
keyboardMarkup.setKeyboard(keyboard);
72+
keyboardMarkup.setResizeKeyboard(true);
73+
keyboardMarkup.setOneTimeKeyboard(true);
74+
75+
return keyboardMarkup;
76+
}
77+
}

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
import java.net.Proxy;
1313
import java.util.ArrayList;
1414
import java.util.Arrays;
15+
import java.util.List;
1516

1617
@Slf4j
1718
@Component
1819
public class ChatGPTService {
1920
private ChatGPT chatGPT;
2021
final ApplicationConfig config;
21-
private ArrayList<Message> messageHistory = new ArrayList<>();
2222

2323
public ChatGPTService(ApplicationConfig config) {
2424
this.config = config;
@@ -32,18 +32,19 @@ public ChatGPTService(ApplicationConfig config) {
3232
.init();
3333
}
3434

35-
public String sendMessage(String prompt, String question, String model) {
35+
public String sendMessage(String prompt, String question, String model, List<Message> history) {
3636
log.info("Question: {}", question);
3737

3838
Message system = Message.ofSystem(prompt);
3939
Message message = Message.of(question);
40-
messageHistory.add(system);
41-
messageHistory.add(message);
4240

43-
return sendMessagesToChatGPT(model);
41+
history.add(system);
42+
history.add(message);
43+
44+
return sendMessagesToChatGPT(model, history);
4445
}
4546

46-
private String sendMessagesToChatGPT(String model){
47+
private String sendMessagesToChatGPT(String model, List<Message> messageHistory){
4748
ChatCompletion chatCompletion = ChatCompletion.builder()
4849
.model(model)
4950
.messages(messageHistory)

0 commit comments

Comments
 (0)