From 9aec0892b9b65733b985f9f9b579f3fae67eb860 Mon Sep 17 00:00:00 2001 From: Stephanie Gredell Date: Mon, 22 Jan 2024 23:03:39 -0800 Subject: [PATCH] Add recommendation buttons to pull up Youtube --- app/src/main/java/musicbot/Listeners.java | 12 ++++++++++++ app/src/main/java/musicbot/commands/Recommend.java | 13 ++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/musicbot/Listeners.java b/app/src/main/java/musicbot/Listeners.java index 833c079..1890d65 100644 --- a/app/src/main/java/musicbot/Listeners.java +++ b/app/src/main/java/musicbot/Listeners.java @@ -2,6 +2,7 @@ package musicbot; import net.dv8tion.jda.api.JDA; 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.interactions.commands.OptionType; 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(); } + + @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(); + } } diff --git a/app/src/main/java/musicbot/commands/Recommend.java b/app/src/main/java/musicbot/commands/Recommend.java index 1cbc841..3912a25 100644 --- a/app/src/main/java/musicbot/commands/Recommend.java +++ b/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.interactions.commands.OptionMapping; 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 se.michaelthelin.spotify.model_objects.specification.Artist; import se.michaelthelin.spotify.model_objects.specification.ArtistSimplified; @@ -40,7 +43,8 @@ public class Recommend extends ListenerAdapter { eb .setTitle("Recommendations") .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 -> { List trackArtists = Arrays.stream(track.getArtists()) @@ -51,9 +55,12 @@ public class Recommend extends ListenerAdapter { eb.addField(track.getName(), artists, false); }); - MessageEmbed embed = eb.build(); + final MessageEmbed embed = eb.build(); - event.getHook().sendMessageEmbeds(embed).queue(); + final List