diff --git a/app/src/main/java/musicbot/Listeners.java b/app/src/main/java/musicbot/Listeners.java deleted file mode 100644 index 4245de7..0000000 --- a/app/src/main/java/musicbot/Listeners.java +++ /dev/null @@ -1,53 +0,0 @@ -package musicbot; - -import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; -import net.dv8tion.jda.api.hooks.ListenerAdapter; -import net.dv8tion.jda.api.interactions.components.buttons.Button; -import org.jetbrains.annotations.NotNull; -import java.util.List; - -public class Listeners extends ListenerAdapter { - - @Override - public void onButtonInteraction(@NotNull ButtonInteractionEvent event) { - final String id = event.getComponent().getId(); - final String label = event.getComponent().getLabel(); - - final String[] args = id.split("_"); - event.deferReply().queue(); - - if (args[0].equalsIgnoreCase("recommend")) { - - final YoutubeSearch youtubeSearch = new YoutubeSearch(); - final String result = youtubeSearch.searchForMusic(label, args[1]); - - event.getHook().sendMessage(result).queue(); - } - - if (args[0].equalsIgnoreCase("genre")) { - final int page = Integer.parseInt(args[1]); - final int offset = page * 10; - final int index = offset + 10; - final int nextPage = page + 1; - - final SpotifyClient spotifyClient = new SpotifyClient(); - final List genres = spotifyClient.findGenres(); - final int maxSize = genres.size(); - final int maxPage = (int) Math.floor(maxSize / 10); - - final EmbedBuilder eb = new EmbedBuilder(); - - if (nextPage <= maxPage) { - genres.subList(offset, index).forEach(genreItem -> eb.addField(genreItem, "", false)); - - event.getHook().sendMessageEmbeds(eb.build()).addActionRow( - Button.primary("genre_" + nextPage, "More") - ).queue(); - } else { - genres.subList(offset, maxSize).forEach(genreItem -> eb.addField(genreItem, "", false)); - event.getHook().sendMessageEmbeds(eb.build()).queue(); - } - } - } -} diff --git a/app/src/main/java/musicbot/Main.java b/app/src/main/java/musicbot/Main.java index 1f056e6..8ead05f 100644 --- a/app/src/main/java/musicbot/Main.java +++ b/app/src/main/java/musicbot/Main.java @@ -1,6 +1,8 @@ package musicbot; +import musicbot.buttonInteractions.MoreGenre; import musicbot.buttonInteractions.MoreRecommendation; +import musicbot.buttonInteractions.VideoRecommendation; import musicbot.commands.Artist; import musicbot.commands.Genres; import musicbot.commands.MusicVideo; @@ -10,7 +12,7 @@ import net.dv8tion.jda.api.JDABuilder; public class Main { public static void main(final String[] args) { final JDA jda = JDABuilder - .createDefault(Token.TOKEN) + .createDefault(Token.DEV_TOKEN) .build(); final CommandManager commandManager = new CommandManager(); final ButtonInteractionManager buttonInteractionManager = new ButtonInteractionManager(); @@ -23,10 +25,11 @@ public class Main { // button interactions buttonInteractionManager.add(new MoreRecommendation()); + buttonInteractionManager.add(new MoreGenre()); + buttonInteractionManager.add(new VideoRecommendation()); // add the managers jda.addEventListener(commandManager); jda.addEventListener(buttonInteractionManager); - jda.addEventListener(new Listeners()); } } diff --git a/app/src/main/java/musicbot/buttonInteractions/MoreGenre.java b/app/src/main/java/musicbot/buttonInteractions/MoreGenre.java new file mode 100644 index 0000000..d0f6208 --- /dev/null +++ b/app/src/main/java/musicbot/buttonInteractions/MoreGenre.java @@ -0,0 +1,48 @@ +package musicbot.buttonInteractions; + +import musicbot.ButtonInteraction; +import musicbot.SpotifyClient; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; +import net.dv8tion.jda.api.interactions.components.buttons.Button; + +import java.util.List; + +public class MoreGenre implements ButtonInteraction { + @Override + public String getName() { + return "genre"; + } + + @Override + public void execute(ButtonInteractionEvent event) { + final String id = event.getComponent().getId(); + final String label = event.getComponent().getLabel(); + + final String[] args = id.split("_"); + event.deferReply().queue(); + + final int page = Integer.parseInt(args[1]); + final int offset = page * 10; + final int index = offset + 10; + final int nextPage = page + 1; + + final SpotifyClient spotifyClient = new SpotifyClient(); + final List genres = spotifyClient.findGenres(); + final int maxSize = genres.size(); + final int maxPage = (int) Math.floor(maxSize / 10); + + final EmbedBuilder eb = new EmbedBuilder(); + + if (nextPage <= maxPage) { + genres.subList(offset, index).forEach(genreItem -> eb.addField(genreItem, "", false)); + + event.getHook().sendMessageEmbeds(eb.build()).addActionRow( + Button.primary("genre_" + nextPage, "More") + ).queue(); + } else { + genres.subList(offset, maxSize).forEach(genreItem -> eb.addField(genreItem, "", false)); + event.getHook().sendMessageEmbeds(eb.build()).queue(); + } + } +} diff --git a/app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java b/app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java index 5b087ca..4540fb5 100644 --- a/app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java +++ b/app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java @@ -30,6 +30,7 @@ public class MoreRecommendation implements ButtonInteraction { @Override public void execute(final ButtonInteractionEvent event) { + event.deferReply().queue(); final String id = event.getComponent().getId(); final String[] args = id.split(ARGS_DELIMITER); final String[] artistGenre = args[1].split(ARTIST_GENRE_DELIMITER); diff --git a/app/src/main/java/musicbot/buttonInteractions/VideoRecommendation.java b/app/src/main/java/musicbot/buttonInteractions/VideoRecommendation.java new file mode 100644 index 0000000..ab48c40 --- /dev/null +++ b/app/src/main/java/musicbot/buttonInteractions/VideoRecommendation.java @@ -0,0 +1,27 @@ +package musicbot.buttonInteractions; + +import musicbot.ButtonInteraction; +import musicbot.YoutubeSearch; +import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent; + +public class VideoRecommendation implements ButtonInteraction { + + @Override + public String getName() { + return "recommend"; + } + + @Override + public void execute(ButtonInteractionEvent event) { + final String id = event.getComponent().getId(); + final String label = event.getComponent().getLabel(); + final String[] args = id.split("_"); + + event.deferReply().queue(); + + final YoutubeSearch youtubeSearch = new YoutubeSearch(); + final String result = youtubeSearch.searchForMusic(label, args[1]); + + event.getHook().sendMessage(result).queue(); + } +}