Browse Source

Refactor the rest of the button interactions

main
Stephanie Gredell 2 years ago
parent
commit
f1aa69e612
  1. 53
      app/src/main/java/musicbot/Listeners.java
  2. 7
      app/src/main/java/musicbot/Main.java
  3. 48
      app/src/main/java/musicbot/buttonInteractions/MoreGenre.java
  4. 1
      app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java
  5. 27
      app/src/main/java/musicbot/buttonInteractions/VideoRecommendation.java

53
app/src/main/java/musicbot/Listeners.java

@ -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<String> 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();
}
}
}
}

7
app/src/main/java/musicbot/Main.java

@ -1,6 +1,8 @@
package musicbot; package musicbot;
import musicbot.buttonInteractions.MoreGenre;
import musicbot.buttonInteractions.MoreRecommendation; import musicbot.buttonInteractions.MoreRecommendation;
import musicbot.buttonInteractions.VideoRecommendation;
import musicbot.commands.Artist; import musicbot.commands.Artist;
import musicbot.commands.Genres; import musicbot.commands.Genres;
import musicbot.commands.MusicVideo; import musicbot.commands.MusicVideo;
@ -10,7 +12,7 @@ import net.dv8tion.jda.api.JDABuilder;
public class Main { public class Main {
public static void main(final String[] args) { public static void main(final String[] args) {
final JDA jda = JDABuilder final JDA jda = JDABuilder
.createDefault(Token.TOKEN) .createDefault(Token.DEV_TOKEN)
.build(); .build();
final CommandManager commandManager = new CommandManager(); final CommandManager commandManager = new CommandManager();
final ButtonInteractionManager buttonInteractionManager = new ButtonInteractionManager(); final ButtonInteractionManager buttonInteractionManager = new ButtonInteractionManager();
@ -23,10 +25,11 @@ public class Main {
// button interactions // button interactions
buttonInteractionManager.add(new MoreRecommendation()); buttonInteractionManager.add(new MoreRecommendation());
buttonInteractionManager.add(new MoreGenre());
buttonInteractionManager.add(new VideoRecommendation());
// add the managers // add the managers
jda.addEventListener(commandManager); jda.addEventListener(commandManager);
jda.addEventListener(buttonInteractionManager); jda.addEventListener(buttonInteractionManager);
jda.addEventListener(new Listeners());
} }
} }

48
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<String> 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();
}
}
}

1
app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java

@ -30,6 +30,7 @@ public class MoreRecommendation implements ButtonInteraction {
@Override @Override
public void execute(final ButtonInteractionEvent event) { public void execute(final ButtonInteractionEvent event) {
event.deferReply().queue();
final String id = event.getComponent().getId(); final String id = event.getComponent().getId();
final String[] args = id.split(ARGS_DELIMITER); final String[] args = id.split(ARGS_DELIMITER);
final String[] artistGenre = args[1].split(ARTIST_GENRE_DELIMITER); final String[] artistGenre = args[1].split(ARTIST_GENRE_DELIMITER);

27
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();
}
}
Loading…
Cancel
Save