aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/commands')
-rw-r--r--src/main/java/commands/CommandManager.java92
-rw-r--r--src/main/java/commands/UIPusher.java64
2 files changed, 114 insertions, 42 deletions
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> 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<AudioTrack> queue = musicManager.scheduler.queue;
+ List<SelectOption> trackMenuOptions = new ArrayList<SelectOption>();
+ 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();
+
+ }
+ }
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage