Skip to content

Commit 3fcb602

Browse files
committed
refactoring + leetcode + stoncks
1 parent 58a6e13 commit 3fcb602

File tree

62 files changed

+1653
-524
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1653
-524
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@
9292
<artifactId>liquibase-core</artifactId>
9393
<version>4.31.1</version>
9494
</dependency>
95+
<dependency>
96+
<groupId>ru.tinkoff.piapi</groupId>
97+
<artifactId>java-sdk-core</artifactId>
98+
<version>1.31</version>
99+
</dependency>
95100
</dependencies>
96101

97102
<build>

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.example.project;
22

3+
import org.example.project.service.job.LeetcodeTags;
34
import org.springframework.boot.SpringApplication;
45
import org.springframework.boot.autoconfigure.SpringBootApplication;
6+
import org.springframework.boot.context.event.ApplicationReadyEvent;
7+
import org.springframework.context.event.EventListener;
58
import org.springframework.scheduling.annotation.EnableScheduling;
69

710
@EnableScheduling
@@ -10,4 +13,9 @@ public class BotApplication {
1013
public static void main(String[] args) {
1114
SpringApplication.run(BotApplication.class, args);
1215
}
16+
17+
@EventListener(ApplicationReadyEvent.class)
18+
private void getLeetcodeTags() {
19+
LeetcodeTags.getLeetcodeTags();
20+
}
1321
}

src/main/java/org/example/project/configuration/BotInitializer.java

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

33
import lombok.extern.slf4j.Slf4j;
44
import org.example.project.service.TelegramBot;
5+
import org.example.project.service.TelegramMessageSender;
56
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.context.annotation.Bean;
68
import org.springframework.context.event.ContextRefreshedEvent;
79
import org.springframework.context.event.EventListener;
810
import org.springframework.stereotype.Component;
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
package org.example.project.configuration;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboardMarkup;
6+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardButton;
7+
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardRow;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
@Configuration
13+
public class BotKeyboardConfig {
14+
@Bean
15+
public ReplyKeyboardMarkup mainMenuKeyboard() {
16+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
17+
List<KeyboardRow> keyboard = new ArrayList<>();
18+
19+
KeyboardRow row1 = new KeyboardRow();
20+
row1.add(new KeyboardButton("/notes"));
21+
row1.add(new KeyboardButton("/gpt"));
22+
23+
KeyboardRow row2 = new KeyboardRow();
24+
row2.add(new KeyboardButton("/busschedule"));
25+
row2.add(new KeyboardButton("/unregister"));
26+
27+
KeyboardRow row3 = new KeyboardRow();
28+
row3.add(new KeyboardButton("/leetcode"));
29+
30+
keyboard.add(row1);
31+
keyboard.add(row2);
32+
keyboard.add(row3);
33+
34+
keyboardMarkup.setKeyboard(keyboard);
35+
keyboardMarkup.setResizeKeyboard(true);
36+
keyboardMarkup.setOneTimeKeyboard(true);
37+
38+
return keyboardMarkup;
39+
}
40+
41+
@Bean
42+
public ReplyKeyboardMarkup gptVersionKeyboard() {
43+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
44+
List<KeyboardRow> keyboard = new ArrayList<>();
45+
46+
KeyboardRow row1 = new KeyboardRow();
47+
row1.add(new KeyboardButton("1"));
48+
row1.add(new KeyboardButton("2"));
49+
50+
KeyboardRow row2 = new KeyboardRow();
51+
row2.add(new KeyboardButton("3"));
52+
row2.add(new KeyboardButton("4"));
53+
54+
keyboard.add(row1);
55+
keyboard.add(row2);
56+
57+
keyboardMarkup.setKeyboard(keyboard);
58+
keyboardMarkup.setResizeKeyboard(true);
59+
keyboardMarkup.setOneTimeKeyboard(true);
60+
61+
return keyboardMarkup;
62+
}
63+
64+
@Bean
65+
public ReplyKeyboardMarkup gptKeyboard() {
66+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
67+
List<KeyboardRow> keyboard = new ArrayList<>();
68+
69+
KeyboardRow row1 = new KeyboardRow();
70+
row1.add(new KeyboardButton("Exit"));
71+
72+
keyboard.add(row1);
73+
74+
keyboardMarkup.setKeyboard(keyboard);
75+
keyboardMarkup.setResizeKeyboard(true);
76+
keyboardMarkup.setOneTimeKeyboard(true);
77+
78+
return keyboardMarkup;
79+
}
80+
81+
@Bean
82+
public ReplyKeyboardMarkup noteMenuKeyboard() {
83+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
84+
List<KeyboardRow> keyboard = new ArrayList<>();
85+
86+
KeyboardRow row1 = new KeyboardRow();
87+
row1.add(new KeyboardButton("/addnote"));
88+
row1.add(new KeyboardButton("/mynote"));
89+
90+
KeyboardRow row2 = new KeyboardRow();
91+
row2.add(new KeyboardButton("/editnote (todo)"));
92+
row2.add(new KeyboardButton("/deletenote (todo)"));
93+
94+
KeyboardRow row3 = new KeyboardRow();
95+
row3.add(new KeyboardButton("/back"));
96+
97+
keyboard.add(row1);
98+
keyboard.add(row2);
99+
keyboard.add(row3);
100+
101+
keyboardMarkup.setKeyboard(keyboard);
102+
keyboardMarkup.setResizeKeyboard(true);
103+
keyboardMarkup.setOneTimeKeyboard(true);
104+
105+
return keyboardMarkup;
106+
}
107+
108+
@Bean
109+
public ReplyKeyboardMarkup leetcodeMenuKeyboard() {
110+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
111+
List<KeyboardRow> keyboard = new ArrayList<>();
112+
113+
KeyboardRow row1 = new KeyboardRow();
114+
row1.add(new KeyboardButton("/randomtask"));
115+
row1.add(new KeyboardButton("/randomtaskwith"));
116+
117+
KeyboardRow row2 = new KeyboardRow();
118+
row2.add(new KeyboardButton("/back"));
119+
120+
keyboard.add(row1);
121+
keyboard.add(row2);
122+
123+
keyboardMarkup.setKeyboard(keyboard);
124+
keyboardMarkup.setResizeKeyboard(true);
125+
keyboardMarkup.setOneTimeKeyboard(true);
126+
127+
return keyboardMarkup;
128+
}
129+
130+
@Bean
131+
public ReplyKeyboardMarkup difficultyMenuKeyboard() {
132+
ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
133+
List<KeyboardRow> keyboard = new ArrayList<>();
134+
135+
KeyboardRow row1 = new KeyboardRow();
136+
row1.add(new KeyboardButton("Easy"));
137+
138+
KeyboardRow row2 = new KeyboardRow();
139+
row2.add(new KeyboardButton("Medium"));
140+
141+
KeyboardRow row3 = new KeyboardRow();
142+
row3.add(new KeyboardButton("Medium"));
143+
144+
keyboard.add(row1);
145+
keyboard.add(row2);
146+
keyboard.add(row3);
147+
148+
keyboardMarkup.setKeyboard(keyboard);
149+
keyboardMarkup.setResizeKeyboard(true);
150+
keyboardMarkup.setOneTimeKeyboard(true);
151+
152+
return keyboardMarkup;
153+
}
154+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.example.project.configuration;
2+
3+
import lombok.Data;
4+
import org.springframework.boot.context.properties.ConfigurationProperties;
5+
import org.springframework.context.annotation.Configuration;
6+
7+
@Data
8+
@Configuration
9+
@ConfigurationProperties(prefix = "invest")
10+
public class InvestConfig {
11+
private String token;
12+
private String userId;
13+
}

src/main/java/org/example/project/data/UserSession.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import lombok.AllArgsConstructor;
55
import lombok.Data;
66
import lombok.NoArgsConstructor;
7-
import org.example.project.service.DialogMode;
7+
import org.example.project.service.state.DialogMode;
88

99
import java.util.ArrayList;
1010

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.example.project.data.leetcode;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import lombok.Data;
5+
import org.example.project.service.job.LeetcodeTags;
6+
7+
import java.util.List;
8+
9+
@Data
10+
@JsonIgnoreProperties(ignoreUnknown = true)
11+
public class ProblemSet {
12+
private List<Question> problemsetQuestionList;
13+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.example.project.data.leetcode;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import lombok.Data;
5+
6+
import java.util.List;
7+
8+
@Data
9+
@JsonIgnoreProperties(ignoreUnknown = true)
10+
public class Question {
11+
private String difficulty;
12+
private String title;
13+
private String titleSlug;
14+
private List<TopicTag> topicTags;
15+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.example.project.data.leetcode;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import lombok.Data;
5+
6+
@Data
7+
@JsonIgnoreProperties(ignoreUnknown = true)
8+
public class TopicTag {
9+
private String slug;
10+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
import java.math.BigDecimal;
10+
import java.time.LocalDateTime;
11+
12+
@Entity
13+
@Data
14+
@Table(name = "stoncks")
15+
@Builder
16+
@NoArgsConstructor
17+
@AllArgsConstructor
18+
public class Stoncks {
19+
@Id
20+
@GeneratedValue(strategy = GenerationType.IDENTITY)
21+
private Long id;
22+
23+
@Column(name = "value")
24+
private BigDecimal value;
25+
26+
@Column(name = "time")
27+
28+
private LocalDateTime time;
29+
}

0 commit comments

Comments
 (0)