Browse Source

Add recommendation buttons to pull up Youtube

main
Stephanie Gredell 2 years ago
parent
commit
9aec0892b9
  1. 12
      app/src/main/java/musicbot/Listeners.java
  2. 13
      app/src/main/java/musicbot/commands/Recommend.java

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

@ -2,6 +2,7 @@ package musicbot;
import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.events.ReadyEvent; import net.dv8tion.jda.api.events.ReadyEvent;
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.interactions.commands.OptionType; import net.dv8tion.jda.api.interactions.commands.OptionType;
import net.dv8tion.jda.api.interactions.commands.build.OptionData; import net.dv8tion.jda.api.interactions.commands.build.OptionData;
@ -40,4 +41,15 @@ public class Listeners extends ListenerAdapter {
jda.upsertCommand("genres", "find recommendations for music").queue(); jda.upsertCommand("genres", "find recommendations for music").queue();
} }
@Override
public void onButtonInteraction(@NotNull ButtonInteractionEvent event) {
final String artist = event.getComponent().getId();
final String title = event.getComponent().getLabel();
final YoutubeSearch youtubeSearch = new YoutubeSearch();
final String result = youtubeSearch.searchForMusic(title, artist);
event.reply(result).queue();
}
} }

13
app/src/main/java/musicbot/commands/Recommend.java

@ -6,6 +6,9 @@ import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.commands.OptionMapping; import net.dv8tion.jda.api.interactions.commands.OptionMapping;
import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.interactions.components.LayoutComponent;
import net.dv8tion.jda.api.interactions.components.buttons.Button;
import net.dv8tion.jda.api.requests.restaction.WebhookMessageCreateAction;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import se.michaelthelin.spotify.model_objects.specification.Artist; import se.michaelthelin.spotify.model_objects.specification.Artist;
import se.michaelthelin.spotify.model_objects.specification.ArtistSimplified; import se.michaelthelin.spotify.model_objects.specification.ArtistSimplified;
@ -40,7 +43,8 @@ public class Recommend extends ListenerAdapter {
eb eb
.setTitle("Recommendations") .setTitle("Recommendations")
.setDescription("Here are a list of recommendations based on your input. " + .setDescription("Here are a list of recommendations based on your input. " +
"It will help you find new music to listen to."); "It will help you find new music to listen to.")
.setFooter("To find a song, select a button below.");
tracks.forEach(track -> { tracks.forEach(track -> {
List<String> trackArtists = Arrays.stream(track.getArtists()) List<String> trackArtists = Arrays.stream(track.getArtists())
@ -51,9 +55,12 @@ public class Recommend extends ListenerAdapter {
eb.addField(track.getName(), artists, false); eb.addField(track.getName(), artists, false);
}); });
MessageEmbed embed = eb.build(); final MessageEmbed embed = eb.build();
event.getHook().sendMessageEmbeds(embed).queue(); final List<Button> buttons = tracks.stream().map(track ->
Button.primary(track.getName(), track.getName())).toList();
event.getHook().sendMessageEmbeds(embed).addActionRow(buttons).queue();
} else { } else {
eb.setTitle("No recommendations found"); eb.setTitle("No recommendations found");
final MessageEmbed embed = eb.build(); final MessageEmbed embed = eb.build();

Loading…
Cancel
Save