Skip to content

Commit fe02152

Browse files
committed
chore: Added option specify the used playlists in music quiz and the delete delay for moderated messages.
1 parent ce00017 commit fe02152

File tree

6 files changed

+66
-64
lines changed

6 files changed

+66
-64
lines changed

src/main/java/de/presti/ree6/bot/BotConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,5 +301,13 @@ public static Color getMainColor() {
301301
}
302302
return mainColor;
303303
}
304+
305+
/**
306+
* Get the configured delay for moderation message deletion.
307+
* @return the delay in seconds for moderation message deletion.
308+
*/
309+
public static int getModerationMessageDeleteDelay() {
310+
return Main.getInstance().getConfig().getConfiguration().getInt("bot.misc.messagedBlockDeleteTime", 5);
311+
}
304312
}
305313

src/main/java/de/presti/ree6/bot/BotWorker.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,11 @@ private static void loadGitProperties() {
118118
gitRepository = prop.getProperty("git.remote.origin.url");
119119
gitDirty = Boolean.parseBoolean(prop.getProperty("git.dirty"));
120120
} catch (Exception ex) {
121-
log.error("Failed to read git information from file!", ex);
121+
if (BotConfig.isDebug()) {
122+
log.error("Failed to read git information from file!", ex);
123+
} else {
124+
log.warn("Failed to read git information from file: {}", ex.getMessage());
125+
}
122126
}
123127
}
124128

src/main/java/de/presti/ree6/commands/CommandManager.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -723,14 +723,22 @@ public void sendMessage(MessageCreateData messageCreateData, MessageChannel mess
723723
public void sendMessage(MessageCreateData messageCreateData, int deleteSecond, MessageChannel messageChannel, InteractionHook interactionHook) {
724724
if (interactionHook == null) {
725725
if (messageChannel == null) return;
726-
if (messageChannel.canTalk())
727-
messageChannel.sendMessage(messageCreateData).delay(deleteSecond, TimeUnit.SECONDS).flatMap(message -> {
728-
if (message != null && message.getChannel().retrieveMessageById(message.getId()).complete() != null) {
729-
return message.delete();
730-
}
726+
if (messageChannel.canTalk()) {
727+
var messageAction = messageChannel.sendMessage(messageCreateData);
728+
729+
if (deleteSecond > 0) {
730+
messageAction.delay(deleteSecond, TimeUnit.SECONDS).flatMap(message -> {
731+
if (message != null && message.getChannel().retrieveMessageById(message.getId()).complete() != null) {
732+
return message.delete();
733+
}
734+
735+
return null;
736+
}).queue();
737+
return;
738+
}
731739

732-
return null;
733-
}).queue();
740+
messageAction.queue();
741+
}
734742
} else {
735743
interactionHook.sendMessage(messageCreateData).queue();
736744
}

src/main/java/de/presti/ree6/events/OtherEvents.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) {
457457
if (moderated) {
458458
Main.getInstance().getCommandManager().deleteMessageWithoutException(event.getMessage(), null);
459459

460-
Main.getInstance().getCommandManager().sendMessage(LanguageService.getByGuild(event.getGuild(), "message.blacklisted"), 5, event.getChannel(), null);
460+
Main.getInstance().getCommandManager().sendMessage(LanguageService.getByGuild(event.getGuild(), "message.blacklisted"), BotConfig.getModerationMessageDeleteDelay(), event.getChannel(), null);
461461
}
462462
}
463463

src/main/java/de/presti/ree6/module/game/impl/musicquiz/util/MusicQuizUtil.java

Lines changed: 33 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.presti.ree6.module.game.impl.musicquiz.util;
22

3+
import de.presti.ree6.main.Main;
34
import de.presti.ree6.module.game.impl.musicquiz.entities.MusicQuizEntry;
45
import de.presti.ree6.utils.apis.SpotifyAPIHandler;
56
import de.presti.ree6.utils.apis.YouTubeAPIHandler;
@@ -12,6 +13,7 @@
1213
import java.util.ArrayList;
1314
import java.util.Arrays;
1415
import java.util.List;
16+
import java.util.concurrent.atomic.AtomicInteger;
1517

1618
/**
1719
* Class used to handle MusicQuiz related Utilities.
@@ -40,68 +42,45 @@ public class MusicQuizUtil {
4042
public MusicQuizUtil() {
4143
instance = this;
4244

45+
4346
ThreadUtil.createThread(x -> {
4447
if (!SpotifyAPIHandler.getInstance().isSpotifyConnected()) return;
4548

46-
// Spotify "just hits" Playlist.
47-
SpotifyAPIHandler.getInstance().getTracks("37i9dQZF1DXcRXFNfZr7Tp").forEach(track -> {
48-
ArtistSimplified[] artistSimplified = track.getArtists();
49-
50-
String url = null;
51-
52-
try {
53-
url = YouTubeAPIHandler.getInstance().searchYoutube(track.getName() + " - " + artistSimplified[0].getName());
54-
} catch (Exception e) {
55-
log.error("Couldn't get Track from ID", e);
56-
}
57-
58-
if (url == null) return;
59-
60-
MusicQuizEntry musicQuizEntry = new MusicQuizEntry(artistSimplified[0].getName(), track.getName(),
61-
Arrays.stream(artistSimplified).skip(1).map(ArtistSimplified::getName).toArray(String[]::new), url);
62-
63-
entries.add(musicQuizEntry);
64-
});
65-
66-
// Spotify "Today's Top Hits" Playlist.
67-
SpotifyAPIHandler.getInstance().getTracks("37i9dQZF1DXcBWIGoYBM5M").forEach(track -> {
68-
ArtistSimplified[] artistSimplified = track.getArtists();
69-
70-
String url = null;
49+
var playListIds = Main.getInstance().getConfig().getConfiguration().getStringList("bot.misc.game.musicQuiz.playlistIds");
7150

72-
try {
73-
url = YouTubeAPIHandler.getInstance().searchYoutube(track.getName() + " - " + artistSimplified[0].getName());
74-
} catch (Exception e) {
75-
log.error("Couldn't get Track from ID", e);
76-
}
77-
78-
if (url == null) return;
79-
80-
MusicQuizEntry musicQuizEntry = new MusicQuizEntry(artistSimplified[0].getName(), track.getName(),
81-
Arrays.stream(artistSimplified).skip(1).map(ArtistSimplified::getName).toArray(String[]::new), url);
82-
83-
entries.add(musicQuizEntry);
84-
});
85-
86-
// Spotify "Rap Caviar" Playlist.
87-
SpotifyAPIHandler.getInstance().getTracks("37i9dQZF1DX0XUsuxWHRQd").forEach(track -> {
88-
ArtistSimplified[] artistSimplified = track.getArtists();
89-
90-
String url = null;
51+
log.info("Loading {} Spotify Playlists.", playListIds.size());
9152

53+
for (String playlistId : playListIds) {
9254
try {
93-
url = YouTubeAPIHandler.getInstance().searchYoutube(track.getName() + " - " + artistSimplified[0].getName());
55+
var tracks = SpotifyAPIHandler.getInstance().getTracks(playlistId);
56+
if (tracks == null || tracks.isEmpty()) {
57+
log.warn("No tracks found in Spotify Playlist: {}", playlistId);
58+
continue;
59+
} else {
60+
log.info("Loading {} entries from Spotify Playlist: {}", tracks.size(), playlistId);
61+
}
62+
tracks.forEach(track -> {
63+
ArtistSimplified[] artistSimplified = track.getArtists();
64+
65+
String url = null;
66+
67+
try {
68+
url = YouTubeAPIHandler.getInstance().searchYoutube(track.getName() + " - " + artistSimplified[0].getName());
69+
} catch (Exception e) {
70+
log.error("Couldn't get Track from ID", e);
71+
}
72+
73+
if (url == null) return;
74+
75+
MusicQuizEntry musicQuizEntry = new MusicQuizEntry(artistSimplified[0].getName(), track.getName(),
76+
Arrays.stream(artistSimplified).skip(1).map(ArtistSimplified::getName).toArray(String[]::new), url);
77+
78+
entries.add(musicQuizEntry);
79+
});
9480
} catch (Exception e) {
95-
log.error("Couldn't get Track from ID", e);
81+
log.error("Couldn't get tracks from Spotify Playlist: {}", playlistId, e);
9682
}
97-
98-
if (url == null) return;
99-
100-
MusicQuizEntry musicQuizEntry = new MusicQuizEntry(artistSimplified[0].getName(), track.getName(),
101-
Arrays.stream(artistSimplified).skip(1).map(ArtistSimplified::getName).toArray(String[]::new), url);
102-
103-
entries.add(musicQuizEntry);
104-
});
83+
}
10584

10685
log.info("Loaded {} entries from Spotify.", entries.size());
10786
}, Sentry::captureException);

src/main/java/de/presti/ree6/utils/config/Config.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ public void createConfigFile() {
161161
.parent().path("debug").addDefault(false).commentSide("Should the Bot be in Debug Mode? This will enable more logging.")
162162
.parent().path("defaultPrefix").addDefault("ree!").commentSide("The default Prefix of the Bot.")
163163
.parent().path("textFont").addDefault("Verdana").commentSide("The Font that is being used in Images for the Text.")
164+
.parent().path("messagedBlockDeleteTime").addDefault(5).commentSide("The time in seconds after which the \"message blocked\" message should be deleted. -1 means never delete it.")
164165
.parent().path("leveling").comment("Customize the leveling module in Ree6.").blankLine()
165166
.path("resets").comment("""
166167
When should Ree6 stop the current progress of the user?
@@ -200,7 +201,9 @@ public void createConfigFile() {
200201
.parent().path("games").addDefault(true).commentSide("Enable the Games module.")
201202
.parent().path("reactionroles").addDefault(true).commentSide("Enable the reaction-roles module.")
202203
.parent().path("slashcommands").addDefault(true).commentSide("Enable the slash-commands support.")
203-
.parent().path("messagecommands").addDefault(true).commentSide("Enable the message-commands support.");
204+
.parent().path("messagecommands").addDefault(true).commentSide("Enable the message-commands support.")
205+
.parent().parent().path("game").comment("Configure game related settings.").blankLine()
206+
.path("musicQuiz").path("playlistIds").addDefault(new String[] { "774kUuKDzLa8ieaSmi8IfS", "78TWH4kgrhIaLcphZTEXSJ", "041EEjr8FMkWlzbuKnSXYD", "0SRdjSDz4RsuozwHv1zhvr" });
204207

205208
yamlFile.path("lavalink")
206209
.comment("Lavalink Configuration, for lavalink support.").blankLine()

0 commit comments

Comments
 (0)