From bac28a1c4de0efe6c495f2141b02d57d0891c4a6 Mon Sep 17 00:00:00 2001 From: "Yukai (Donald) Shan" Date: Sat, 10 Dec 2022 17:01:00 -0800 Subject: Add files via upload --- src/main/java/commands/CommandManager.java | 92 ++++++++++++++++-------------- src/main/java/commands/UIPusher.java | 64 +++++++++++++++++++++ 2 files changed, 114 insertions(+), 42 deletions(-) create mode 100644 src/main/java/commands/UIPusher.java (limited to 'src/main/java/commands') diff --git a/src/main/java/commands/CommandManager.java b/src/main/java/commands/CommandManager.java index 65500ef..05e501a 100644 --- a/src/main/java/commands/CommandManager.java +++ b/src/main/java/commands/CommandManager.java @@ -1,65 +1,73 @@ package commands; import audio.Music; -import net.dv8tion.jda.api.entities.TextChannel; -import net.dv8tion.jda.api.events.guild.GuildReadyEvent; import net.dv8tion.jda.api.events.interaction.SlashCommandEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; -import net.dv8tion.jda.api.interactions.commands.build.CommandData; -import utility.URLChecker; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; +import java.util.Objects; public class CommandManager extends ListenerAdapter { Music music; + String vTuberSongDatabase = "https://pinapelz.github.io/vTuberDiscordBot/hololiveMusic.txt"; public CommandManager(Music music){ this.music = music; } @Override public void onSlashCommand(SlashCommandEvent event) { String command = event.getName(); //test - if (command.equals("play")) { - music.playMusic(event); - } - else if(command.equals("leave")){ - event.getGuild().getAudioManager().setSendingHandler(null); - event.getGuild().getAudioManager().closeAudioConnection(); - event.reply("OtsuRose! See you later!").queue(); - } - else if(command.equals("vtmusic")){ - event.deferReply().queue(); - music.queueVTMusic((TextChannel) event.getChannel(),Integer.parseInt(event.getOption("number").getAsString())); - event.getHook().sendMessage("Queued up " + Integer.parseInt(event.getOption("number").getAsString())+" songs!").queue(); - } - else if(command.equals("showqueue")){ - music.showQueue((TextChannel) event.getChannel(), event); - } - else if(command.equals("skip")){ - music.skipTrack((TextChannel) event.getChannel(),event); + switch (command) { + case "play": + music.playMusic(event); + break; + case "leave": + Objects.requireNonNull(event.getGuild()).getAudioManager().setSendingHandler(null); + event.getGuild().getAudioManager().closeAudioConnection(); + event.reply("OtsuRose! See you later!").queue(); + break; + case "vtmusic": + event.deferReply().queue(); + music.queueTrackFromLoadedList(event, Integer.parseInt(Objects.requireNonNull(event.getOption("number")).getAsString()), "VTubermusic.txt",vTuberSongDatabase); + event.getHook().sendMessage("Queued up " + Integer.parseInt(Objects.requireNonNull(event.getOption("number")).getAsString()) + " songs!").queue(); + break; + case "showqueue": + music.showQueue(event); + break; + case "skip": + music.skipTrack(event); - } - else if(command.equals("pause")){ - music.pausePlayer((TextChannel) event.getChannel(),event); + break; + case "pause": + music.pausePlayer(event); - } - else if(command.equals("nowplaying")){ - music.showNowPlaying(event); + break; + case "controls": + music.showControls(event); - } - else if(command.equals("stop")){ - music.stopPlayer(event); + break; + case "shuffle": + music.shuffleQueue(event); - } - else if(command.equals("volume")){ - music.setVolume(event,event.getOption("volume").getAsString()); + break; + case "nowplaying": + music.showNowPlaying(event); + + break; + case "stop": + music.stopPlayer(event); + + break; + case "volume": + music.setVolume(event, Objects.requireNonNull(event.getOption("volume")).getAsString()); + break; + case "remove": + music.showQueueMenu(event, "remove-queue", "Select a track to remove below"); + + break; + case "inspect": + music.showQueueMenu(event, "inspect-queue", "Select a track to inspect below"); + break; } super.onSlashCommand(event); } - @Override - public void onGuildReady(GuildReadyEvent event){ - List commandData = new ArrayList<>(); - } + } diff --git a/src/main/java/commands/UIPusher.java b/src/main/java/commands/UIPusher.java new file mode 100644 index 0000000..6ebe61a --- /dev/null +++ b/src/main/java/commands/UIPusher.java @@ -0,0 +1,64 @@ +package commands; + +import audio.GuildMusicManager; +import com.sedmelluq.discord.lavaplayer.track.AudioTrack; +import net.dv8tion.jda.api.entities.Emoji; +import net.dv8tion.jda.api.entities.TextChannel; +import net.dv8tion.jda.api.events.interaction.SlashCommandEvent; +import net.dv8tion.jda.api.interactions.components.Button; +import net.dv8tion.jda.api.interactions.components.selections.SelectOption; +import net.dv8tion.jda.api.interactions.components.selections.SelectionMenu; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.Queue; + +public class UIPusher { + + public void showControls(SlashCommandEvent event){ + event.reply("Controls for the player:") + .addActionRow( + Button.primary("action-volumedown", Emoji.fromUnicode("U+1F509")), + Button.primary("action-skip", Emoji.fromUnicode("U+23E9")), + Button.primary("action-pause", Emoji.fromUnicode("U+23EF")), + Button.primary("action-stop", Emoji.fromUnicode("U+23F9")), + Button.primary("action-volumeup", Emoji.fromUnicode("U+1F50A")) + ) + .queue(); + } + public void showQueueMenu(SlashCommandEvent event, String param, String instruction,GuildMusicManager musicManager){ + Queue queue = musicManager.scheduler.queue; + List trackMenuOptions = new ArrayList(); + synchronized (queue) + { + if (queue.isEmpty()) + { + event.reply("The queue is currently empty!").queue(); + } + else + { + int trackCount = 0; + for (AudioTrack track : queue) + { + if (trackCount != 25) + { + SelectOption option = SelectOption.of(track.getInfo().title,param+" "+track.getInfo().title); + trackMenuOptions.add(option); + trackCount++; + } + } + SelectionMenu menu = SelectionMenu.create("menu:class") + .setPlaceholder("-Select a track-") // shows the placeholder indicating what this menu is for + .setRequiredRange(1,1)// only one can be selected + .addOptions(trackMenuOptions) + .build(); + event.reply(instruction) + .setEphemeral(true) + .addActionRow(menu) + .queue(); + + } + } + } +} -- cgit v1.2.3