Skip to content

Commit 689f4f3

Browse files
authored
Merge pull request #8 from janesth/csbot-features
version 3 bugfixes and gregflix feature
2 parents 5aa2a6c + d7e51b7 commit 689f4f3

21 files changed

Lines changed: 845 additions & 214 deletions

src/main/java/StartUp.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import net.dv8tion.jda.api.utils.MemberCachePolicy;
1111
import services.DataService;
1212
import services.FaceitMatchService;
13+
import services.MessageService;
1314

1415
import java.io.IOException;
1516
import java.io.InputStream;
@@ -31,7 +32,7 @@ public static void main(String[] args) {
3132
try {
3233

3334
String startMessage = LocalDateTime.now().format(START_TIME) + " - Started application.";
34-
System.out.println(startMessage);
35+
System.out.println("[CSBot - StartUp] " + startMessage);
3536

3637
InputStream inputStream = StartUp.class.getClassLoader().getResourceAsStream("config.properties");
3738
Properties properties = new Properties();
@@ -41,20 +42,21 @@ public static void main(String[] args) {
4142
//FYI: Locale.getDefault() returns locale of OS
4243
ResourceBundle resourceBundle = ResourceBundle.getBundle("localization", new Locale("en"));
4344
DataService dataService = null;
45+
MessageService messageService = null;
4446
try {
4547
dataService = new DataService(properties);
48+
messageService = new MessageService(properties);
4649
} catch (SQLException ex) {
47-
System.out.println("SQL Exception thrown: " + ex.getMessage());
50+
System.out.println("[CSBot - StartUp] SQL Exception thrown: " + ex.getMessage());
4851
}
4952

5053
FaceitMatchService faceitMatchService = new FaceitMatchService(properties, dataService);
5154

5255
JDA jda = JDABuilder.createDefault(properties.getProperty("discord.apiToken"))
53-
.addEventListeners(new CounterStrikeBotListener(properties, dataService))
56+
.addEventListeners(new CounterStrikeBotListener(properties, dataService, messageService))
5457
.setChunkingFilter(ChunkingFilter.ALL)
5558
.setMemberCachePolicy(MemberCachePolicy.ALL)
56-
.enableIntents(GatewayIntent.GUILD_MEMBERS)
57-
.enableIntents(GatewayIntent.DIRECT_MESSAGES)
59+
.enableIntents(GatewayIntent.GUILD_MEMBERS, GatewayIntent.MESSAGE_CONTENT, GatewayIntent.DIRECT_MESSAGES)
5860
.build();
5961

6062
jda.getPresence().setActivity(Activity.playing("YOINC.ch"));
@@ -80,9 +82,9 @@ public static void main(String[] args) {
8082
return response;
8183
});
8284
} catch (InterruptedException ex) {
83-
System.out.println("InterruptedException thrown: " + ex.getMessage());
85+
System.out.println("[CSBot - StartUp] InterruptedException thrown: " + ex.getMessage());
8486
} catch (IOException ex) {
85-
System.out.println("IOException thrown: " + ex.getMessage());
87+
System.out.println("[CSBot - StartUp] IOException thrown: " + ex.getMessage());
8688
}
8789
}
8890
}

src/main/java/http/ConnectionBuilder.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22

33
import com.google.gson.*;
44
import model.faceit.FaceitMatch;
5+
import model.omdb.OMDBMovieResponse;
6+
import model.retake.RetakePlayer;
57
import model.steam.ResponseData;
68

79
import java.io.IOException;
810
import java.net.URI;
11+
import java.net.URLEncoder;
912
import java.net.http.HttpClient;
1013
import java.net.http.HttpRequest;
1114
import java.net.http.HttpResponse;
15+
import java.nio.charset.StandardCharsets;
1216
import java.util.Properties;
1317

1418
public class ConnectionBuilder {
@@ -19,6 +23,10 @@ public ConnectionBuilder(Properties properties) {
1923
this.properties = properties;
2024
}
2125

26+
public String fetchAssistantRetakeMessage(RetakePlayer retakePlayer) throws InterruptedException, IOException {
27+
return null;
28+
}
29+
2230
public ResponseData fetchSteamUserStats(String steamID) throws InterruptedException, IOException {
2331

2432
HttpClient client = HttpClient.newHttpClient();
@@ -51,7 +59,7 @@ public FaceitMatch fetchFaceitMatchDetails(String userId) throws IOException, In
5159
FaceitMatch responseData;
5260

5361
request = HttpRequest.newBuilder()
54-
.uri(URI.create("https://open.faceit.com/data/v4/matches/" + matchId))
62+
.uri(URI.create(properties.getProperty("faceit.matchDetails.url") + matchId))
5563
.header("Authorization", "Bearer " + properties.getProperty("faceit.api"))
5664
.build();
5765
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
@@ -61,12 +69,32 @@ public FaceitMatch fetchFaceitMatchDetails(String userId) throws IOException, In
6169
return responseData;
6270
}
6371

72+
public OMDBMovieResponse fetchMovieDetails(String title) throws IOException, InterruptedException {
73+
HttpClient client = HttpClient.newHttpClient();
74+
75+
HttpRequest request;
76+
OMDBMovieResponse responseData;
77+
78+
request = HttpRequest.newBuilder()
79+
.uri(URI.create(properties.getProperty("omdb.search.url") + prepareTitle(title) + "&apikey=" + properties.getProperty("omdb.api")))
80+
.build();
81+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
82+
83+
responseData = new Gson().fromJson(response.body(), OMDBMovieResponse.class);
84+
85+
return responseData;
86+
}
87+
88+
private String prepareTitle(String title) {
89+
return URLEncoder.encode(title, StandardCharsets.UTF_8);
90+
}
91+
6492
private String fetchFaceitMatchId(HttpClient client, String userId) throws IOException, InterruptedException {
6593
HttpRequest request;
6694
String id = null;
6795

6896
request = HttpRequest.newBuilder()
69-
.uri(URI.create("https://www.faceit.com/api/match/v1/matches/groupByState?userId=" + userId))
97+
.uri(URI.create(properties.getProperty("faceit.matchId.url") + userId))
7098
.build();
7199
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
72100

Lines changed: 74 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package listeners;
22

33
import net.dv8tion.jda.api.JDA;
4+
import net.dv8tion.jda.api.entities.channel.ChannelType;
45
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
56
import net.dv8tion.jda.api.events.interaction.command.UserContextInteractionEvent;
7+
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
8+
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
9+
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
610
import net.dv8tion.jda.api.events.session.ReadyEvent;
711
import net.dv8tion.jda.api.hooks.ListenerAdapter;
812
import services.*;
@@ -16,47 +20,51 @@ public class CounterStrikeBotListener extends ListenerAdapter {
1620
private RetakeService retakeService;
1721
private CsFunService csFunService;
1822
private DiscordService discordService;
23+
private GregflixService gregflixService;
1924

20-
public CounterStrikeBotListener(Properties properties, DataService dataService) {
25+
public CounterStrikeBotListener(Properties properties, DataService dataService, MessageService messageService) {
2126
csStatsService = new CsStatsService(properties, dataService);
22-
csFunService = new CsFunService(properties, dataService);
23-
retakeService = new RetakeService(properties, dataService);
24-
discordService = new DiscordService(properties, dataService, retakeService);
27+
csFunService = new CsFunService(dataService, messageService);
28+
retakeService = new RetakeService(properties, dataService, messageService);
29+
discordService = new DiscordService(properties, dataService, retakeService, messageService);
30+
gregflixService = new GregflixService(properties, messageService, dataService);
2531
}
2632

2733
@Override
2834
public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
2935

3036
String locale = discordService.getUserLocale(event);
3137

32-
if ("stats".equals(event.getName())) {
33-
event.deferReply().queue();
34-
event.getHook().sendMessageEmbeds(csStatsService.handleStatsEvent(event, locale).build()).queue();
35-
}
36-
37-
if ("compare".equals(event.getName())) {
38-
event.deferReply().queue();
39-
event.getHook().sendMessageEmbeds(csStatsService.handleCompareEvent(event, locale).build()).queue();
40-
}
41-
42-
if ("map".equals(event.getName())) {
43-
event.deferReply().queue();
44-
event.getHook().sendMessage(retakeService.handleMapEvent(event, locale)).queue();
45-
}
46-
47-
if("wow".equals(event.getName())) {
48-
event.deferReply().queue();
49-
event.getHook().sendMessage(csFunService.handleAddWowEvent(event, locale)).queue();
50-
}
51-
52-
if("teams".equals(event.getName())) {
53-
event.deferReply().queue();
54-
event.getHook().sendMessageEmbeds(csFunService.handleSetTeamsEvent(event, locale).build()).queue();
55-
}
56-
57-
if("status".equals(event.getName())) {
58-
event.deferReply().queue();
59-
event.getHook().sendMessageEmbeds(retakeService.handleStatusEvent(event, locale).build()).queue();
38+
if(event.getGuild().getMembers().contains(event.getMember())) {
39+
if ("stats".equals(event.getName())) {
40+
event.deferReply().queue();
41+
event.getHook().sendMessageEmbeds(csStatsService.handleStatsEvent(event, locale).build()).queue();
42+
}
43+
44+
if ("compare".equals(event.getName())) {
45+
event.deferReply().queue();
46+
event.getHook().sendMessageEmbeds(csStatsService.handleCompareEvent(event, locale).build()).queue();
47+
}
48+
49+
if ("map".equals(event.getName())) {
50+
event.deferReply().queue();
51+
event.getHook().sendMessage(retakeService.handleMapEvent(event, locale)).queue();
52+
}
53+
54+
if ("wow".equals(event.getName())) {
55+
event.deferReply().queue();
56+
event.getHook().sendMessage(csFunService.handleAddWowEvent(event, locale)).queue();
57+
}
58+
59+
if ("teams".equals(event.getName())) {
60+
event.deferReply().queue();
61+
event.getHook().sendMessageEmbeds(csFunService.handleSetTeamsEvent(event, locale).build()).queue();
62+
}
63+
64+
if ("status".equals(event.getName())) {
65+
event.deferReply().queue();
66+
event.getHook().sendMessageEmbeds(retakeService.handleStatusEvent(event, locale).build()).queue();
67+
}
6068
}
6169
}
6270

@@ -87,4 +95,38 @@ public void onReady(ReadyEvent event){
8795
JDA jda = event.getJDA();
8896
CompletableFuture.runAsync( () -> discordService.scheduleAllTasks(jda));
8997
}
98+
99+
@Override
100+
public void onMessageReceived(MessageReceivedEvent messageReceivedEvent) {
101+
String locale = "en";
102+
103+
if(messageReceivedEvent.getChannel().getType().equals(ChannelType.PRIVATE)) {
104+
if(!messageReceivedEvent.getAuthor().isBot()) {
105+
messageReceivedEvent.getAuthor().openPrivateChannel().queue((privateChannel -> {
106+
gregflixService.handleGregflixEvent(messageReceivedEvent, locale, privateChannel);
107+
}));
108+
}
109+
}
110+
}
111+
112+
@Override
113+
public void onButtonInteraction(ButtonInteractionEvent buttonInteractionEvent) {
114+
String locale = "en";
115+
buttonInteractionEvent.getMessageChannel().sendMessage(gregflixService.handleButtonEvent(buttonInteractionEvent, locale)).queue();
116+
}
117+
118+
@Override
119+
public void onMessageReactionAdd(MessageReactionAddEvent messageReactionAddEvent) {
120+
String locale = "en";
121+
122+
if(messageReactionAddEvent.getChannel().getType().equals(ChannelType.PRIVATE)) {
123+
if(!messageReactionAddEvent.getUser().isBot()) {
124+
messageReactionAddEvent.retrieveMessage().queue((message -> {
125+
if(message.getAuthor().isBot() && message.getContentDisplay().matches("[^\\n]+?--[^\\n]+?--[^\\n]+?--[^\\n]+?")) {
126+
gregflixService.handleGregflixReactionEvent(messageReactionAddEvent, locale);
127+
}
128+
}));
129+
}
130+
}
131+
}
90132
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package model.bot;
2+
3+
import java.sql.Date;
4+
5+
public class GregflixEntry {
6+
private String imdbID;
7+
private String title;
8+
private boolean uploaded;
9+
private Date uploadedDate;
10+
private String showType;
11+
12+
13+
public GregflixEntry(String imdbID, String title, boolean uploaded, Date uploadedDate, String showType) {
14+
this.imdbID = imdbID;
15+
this.title = title;
16+
this.uploaded = uploaded;
17+
this.uploadedDate = uploadedDate;
18+
this.showType = showType;
19+
}
20+
21+
public String getShowType() {
22+
return showType;
23+
}
24+
25+
public void setShowType(String showType) {
26+
this.showType = showType;
27+
}
28+
public Date getUploadedDate() {
29+
return uploadedDate;
30+
}
31+
32+
public void setUploadedDate(Date uploadedDate) {
33+
this.uploadedDate = uploadedDate;
34+
}
35+
public String getImdbID() {
36+
return imdbID;
37+
}
38+
39+
public void setImdbID(String imdbID) {
40+
this.imdbID = imdbID;
41+
}
42+
43+
public String getTitle() {
44+
return title;
45+
}
46+
47+
public void setTitle(String title) {
48+
this.title = title;
49+
}
50+
51+
public boolean isUploaded() {
52+
return uploaded;
53+
}
54+
55+
public void setUploaded(boolean uploaded) {
56+
this.uploaded = uploaded;
57+
}
58+
}

src/main/java/model/bot/User.java

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package model.bot;
2+
3+
public class User {
4+
private int user_id;
5+
private String username;
6+
private String steamID;
7+
private String faceitID;
8+
private String discordID;
9+
private boolean hasGregflix;
10+
11+
public User(int user_id, String username, String steamID, String faceitID, String discordID, boolean hasGregflix) {
12+
this.user_id = user_id;
13+
this.username = username;
14+
this.steamID = steamID;
15+
this.faceitID = faceitID;
16+
this.discordID = discordID;
17+
this.hasGregflix = hasGregflix;
18+
}
19+
20+
public int getUser_id() {
21+
return user_id;
22+
}
23+
24+
public void setUser_id(int user_id) {
25+
this.user_id = user_id;
26+
}
27+
28+
public String getUsername() {
29+
return username;
30+
}
31+
32+
public void setUsername(String username) {
33+
this.username = username;
34+
}
35+
36+
public String getSteamID() {
37+
return steamID;
38+
}
39+
40+
public void setSteamID(String steamID) {
41+
this.steamID = steamID;
42+
}
43+
44+
public String getFaceitID() {
45+
return faceitID;
46+
}
47+
48+
public void setFaceitID(String faceitID) {
49+
this.faceitID = faceitID;
50+
}
51+
52+
public String getDiscordID() {
53+
return discordID;
54+
}
55+
56+
public void setDiscordID(String discordID) {
57+
this.discordID = discordID;
58+
}
59+
60+
public boolean isHasGregflix() {
61+
return hasGregflix;
62+
}
63+
64+
public void setHasGregflix(boolean hasGregflix) {
65+
this.hasGregflix = hasGregflix;
66+
}
67+
}

0 commit comments

Comments
 (0)