From 084ca6dc04238e0ace659cd1fadd5198b4ec9407 Mon Sep 17 00:00:00 2001 From: Moukaskon Date: Mon, 3 Feb 2025 10:35:50 +0200 Subject: [PATCH] Stef And Petr changes --- .../jmusicbot/commands/music/PlayCmd.java | 187 +--------------- .../commands/music/PlayCmdHelper.java | 2 +- .../commands/music/PlaylistsCmd.java | 22 +- .../commands/music/ResultHandler.java | 4 +- .../commands/owner/AppendlistCmd.java | 3 +- .../commands/owner/DefaultlistCmd.java | 2 +- .../commands/owner/DeletelistCmd.java | 40 ++++ .../jmusicbot/commands/owner/ListCmd.java | 2 +- .../jmusicbot/commands/owner/PlaylistCmd.java | 209 ++---------------- 9 files changed, 83 insertions(+), 388 deletions(-) diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/music/PlayCmd.java b/src/main/java/com/jagrosh/jmusicbot/commands/music/PlayCmd.java index a81e4fc36..c47d37412 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/music/PlayCmd.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/music/PlayCmd.java @@ -30,8 +30,7 @@ import com.jagrosh.jmusicbot.audio.QueuedTrack; import com.jagrosh.jmusicbot.commands.DJCommand; import com.jagrosh.jmusicbot.commands.MusicCommand; -import com.jagrosh.jmusicbot.playlist.PlaylistLoader; -import com.jagrosh.jmusicbot.playlist.Playlist; +import com.jagrosh.jmusicbot.playlist.PlaylistLoader.Playlist; import com.jagrosh.jmusicbot.utils.FormatUtil; import java.util.concurrent.TimeUnit; import net.dv8tion.jda.api.Permission; @@ -48,6 +47,7 @@ public class PlayCmd extends MusicCommand private final static String CANCEL = "\uD83D\uDEAB"; // 🚫 private final String loadingEmoji; + private final Message m; public PlayCmd(Bot bot) { @@ -59,7 +59,7 @@ public PlayCmd(Bot bot) this.aliases = bot.getConfig().getAliases(this.name); this.beListening = true; this.bePlaying = false; - this.children = new Command[]{new PlaylistCmd(bot)}; + this.children = new Command[]{new PlayCmdHelper(bot)}; } @Override @@ -91,184 +91,7 @@ public void doCommand(CommandEvent event) ? event.getArgs().substring(1,event.getArgs().length()-1) : event.getArgs().isEmpty() ? event.getMessage().getAttachments().get(0).getUrl() : event.getArgs(); event.reply(loadingEmoji+" Loading... `["+args+"]`", m -> bot.getPlayerManager().loadItemOrdered(event.getGuild(), args, new ResultHandler(m,event,false))); + new ResultHandler(bot, m, event, false); // this was changed } - - private class ResultHandler implements AudioLoadResultHandler - { - private final Message m; - private final CommandEvent event; - private final boolean ytsearch; - - private ResultHandler(Message m, CommandEvent event, boolean ytsearch) - { - this.m = m; - this.event = event; - this.ytsearch = ytsearch; - } - - private void loadSingle(AudioTrack track, AudioPlaylist playlist) - { - if(bot.getConfig().isTooLong(track)) - { - m.editMessage(FormatUtil.filter(event.getClient().getWarning()+" This track (**"+track.getInfo().title+"**) is longer than the allowed maximum: `" - + TimeUtil.formatTime(track.getDuration())+"` > `"+ TimeUtil.formatTime(bot.getConfig().getMaxSeconds()*1000)+"`")).queue(); - return; - } - AudioHandler handler = (AudioHandler)event.getGuild().getAudioManager().getSendingHandler(); - int pos = handler.addTrack(new QueuedTrack(track, RequestMetadata.fromResultHandler(track, event)))+1; - String addMsg = FormatUtil.filter(event.getClient().getSuccess()+" Added **"+track.getInfo().title - +"** (`"+ TimeUtil.formatTime(track.getDuration())+"`) "+(pos==0?"to begin playing":" to the queue at position "+pos)); - if(playlist==null || !event.getSelfMember().hasPermission(event.getTextChannel(), Permission.MESSAGE_ADD_REACTION)) - m.editMessage(addMsg).queue(); - else - { - new ButtonMenu.Builder() - .setText(addMsg+"\n"+event.getClient().getWarning()+" This track has a playlist of **"+playlist.getTracks().size()+"** tracks attached. Select "+LOAD+" to load playlist.") - .setChoices(LOAD, CANCEL) - .setEventWaiter(bot.getWaiter()) - .setTimeout(30, TimeUnit.SECONDS) - .setAction(re -> - { - if(re.getName().equals(LOAD)) - m.editMessage(addMsg+"\n"+event.getClient().getSuccess()+" Loaded **"+loadPlaylist(playlist, track)+"** additional tracks!").queue(); - else - m.editMessage(addMsg).queue(); - }).setFinalAction(m -> - { - try{ m.clearReactions().queue(); }catch(PermissionException ignore) {} - }).build().display(m); - } - } - - private int loadPlaylist(AudioPlaylist playlist, AudioTrack exclude) - { - int[] count = {0}; - playlist.getTracks().stream().forEach((track) -> { - if(!bot.getConfig().isTooLong(track) && !track.equals(exclude)) - { - AudioHandler handler = (AudioHandler)event.getGuild().getAudioManager().getSendingHandler(); - handler.addTrack(new QueuedTrack(track, RequestMetadata.fromResultHandler(track, event))); - count[0]++; - } - }); - return count[0]; - } - - @Override - public void trackLoaded(AudioTrack track) - { - loadSingle(track, null); - } - - @Override - public void playlistLoaded(AudioPlaylist playlist) - { - if(playlist.getTracks().size()==1 || playlist.isSearchResult()) - { - AudioTrack single = playlist.getSelectedTrack()==null ? playlist.getTracks().get(0) : playlist.getSelectedTrack(); - loadSingle(single, null); - } - else if (playlist.getSelectedTrack()!=null) - { - AudioTrack single = playlist.getSelectedTrack(); - loadSingle(single, playlist); - } - else - { - int count = loadPlaylist(playlist, null); - if(playlist.getTracks().size() == 0) - { - m.editMessage(FormatUtil.filter(event.getClient().getWarning()+" The playlist "+(playlist.getName()==null ? "" : "(**"+playlist.getName() - +"**) ")+" could not be loaded or contained 0 entries")).queue(); - } - else if(count==0) - { - m.editMessage(FormatUtil.filter(event.getClient().getWarning()+" All entries in this playlist "+(playlist.getName()==null ? "" : "(**"+playlist.getName() - +"**) ")+"were longer than the allowed maximum (`"+bot.getConfig().getMaxTime()+"`)")).queue(); - } - else - { - m.editMessage(FormatUtil.filter(event.getClient().getSuccess()+" Found " - +(playlist.getName()==null?"a playlist":"playlist **"+playlist.getName()+"**")+" with `" - + playlist.getTracks().size()+"` entries; added to the queue!" - + (count - { - AudioHandler handler = (AudioHandler)event.getGuild().getAudioManager().getSendingHandler(); - playlist.loadTracks(bot.getPlayerManager(), - (at) -> handler.addTrack(new QueuedTrack(at, RequestMetadata.fromResultHandler(at, event))), - () -> { - StringBuilder builder = new StringBuilder(playlist.getTracks().isEmpty() - ? event.getClient().getWarning()+" No tracks were loaded!" - : event.getClient().getSuccess()+" Loaded **"+playlist.getTracks().size()+"** tracks!"); - - if(!playlist.getErrors().isEmpty()) - { - builder.append("\nThe following tracks failed to load:"); - playlist.getErrors().forEach(err -> - builder.append("\n`[").append(err.getIndex()+1).append("]` **") - .append(err.getItem()).append("**: ").append(err.getReason())); - } - - String str = builder.toString(); - if(str.length() > 2000) - str = str.substring(0, 1994) + " (...)"; - - m.editMessage(FormatUtil.filter(str)).queue(); - } - ); - }); - } - } + } diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/music/PlayCmdHelper.java b/src/main/java/com/jagrosh/jmusicbot/commands/music/PlayCmdHelper.java index ba5bc0a59..fdce0063c 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/music/PlayCmdHelper.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/music/PlayCmdHelper.java @@ -54,4 +54,4 @@ public void doCommand(CommandEvent event) }); }); } - } \ No newline at end of file + } diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/music/PlaylistsCmd.java b/src/main/java/com/jagrosh/jmusicbot/commands/music/PlaylistsCmd.java index 806225cec..3f7bd99b8 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/music/PlaylistsCmd.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/music/PlaylistsCmd.java @@ -19,8 +19,6 @@ import com.jagrosh.jdautilities.command.CommandEvent; import com.jagrosh.jmusicbot.Bot; import com.jagrosh.jmusicbot.commands.MusicCommand; -import com.jagrosh.jmusicbot.playlist.Playlist; -import com.jagrosh.jmusicbot.playlist.PlaylistLoader; /** * @@ -36,22 +34,20 @@ public PlaylistsCmd(Bot bot) this.aliases = bot.getConfig().getAliases(this.name); this.guildOnly = true; this.beListening = false; - this.beListening = false; + this.bePlaying = false; } @Override public void doCommand(CommandEvent event) { - PlaylistLoader playlistLoader = bot.getPlaylistLoader(); - - if(!playlistLoader.folderExists()) - playlistLoader.createFolder(); - if(!playlistLoader.folderExists()) - { - event.reply(event.getClient().getWarning()+" Playlists folder does not exist and could not be created!"); - return; - } - List list = playlistLoader.getPlaylistNames(); + if(!bot.getPlaylistLoader().folderExists()) + bot.getPlaylistLoader().createFolder(); + if(!bot.getPlaylistLoader().folderExists()) + { + event.reply(event.getClient().getWarning()+" Playlists folder does not exist and could not be created!"); + return; + } + List list = bot.getPlaylistLoader().getPlaylistNames(); if(list==null) event.reply(event.getClient().getError()+" Failed to load available playlists!"); else if(list.isEmpty()) diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/music/ResultHandler.java b/src/main/java/com/jagrosh/jmusicbot/commands/music/ResultHandler.java index ad5fae7d7..055d87634 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/music/ResultHandler.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/music/ResultHandler.java @@ -15,7 +15,7 @@ import com.sedmelluq.discord.lavaplayer.track.AudioTrack; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Message; -// import net.dv8tion.jda.api.exceptions.PermissionException; +import net.dv8tion.jda.api.exceptions.PermissionException; import java.util.concurrent.TimeUnit; @@ -126,4 +126,4 @@ public void loadFailed(FriendlyException throwable) { else m.editMessage(event.getClient().getError() + " Error loading track.").queue(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/owner/AppendlistCmd.java b/src/main/java/com/jagrosh/jmusicbot/commands/owner/AppendlistCmd.java index fd69ede37..f42dc82da 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/owner/AppendlistCmd.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/owner/AppendlistCmd.java @@ -62,4 +62,5 @@ protected void execute(CommandEvent event) } } } - } \ No newline at end of file + } + diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/owner/DefaultlistCmd.java b/src/main/java/com/jagrosh/jmusicbot/commands/owner/DefaultlistCmd.java index 0b7475741..ef91945d2 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/owner/DefaultlistCmd.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/owner/DefaultlistCmd.java @@ -12,4 +12,4 @@ public DefaultlistCmd(Bot bot) this.arguments = ""; this.guildOnly = true; } - } \ No newline at end of file + } diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/owner/DeletelistCmd.java b/src/main/java/com/jagrosh/jmusicbot/commands/owner/DeletelistCmd.java index e69de29bb..ea9f6b6db 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/owner/DeletelistCmd.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/owner/DeletelistCmd.java @@ -0,0 +1,40 @@ +package com.jagrosh.jmusicbot.commands.owner; + +import java.io.IOException; + +import com.jagrosh.jmusicbot.Bot; +import com.jagrosh.jmusicbot.commands.OwnerCommand; + +public class DeletelistCmd extends OwnerCommand + { + + public DeletelistCmd(Bot bot) + { + this.bot = bot; + this.name = "delete"; + this.aliases = new String[]{"remove"}; + this.help = "deletes an existing playlist"; + this.arguments = ""; + this.guildOnly = false; + } + + @Override + protected void execute(CommandEvent event) + { + String pname = event.getArgs().replaceAll("\\s+", "_"); + if(bot.getPlaylistLoader().getPlaylist(pname)==null) + event.reply(event.getClient().getError()+" Playlist `"+pname+"` doesn't exist!"); + else + { + try + { + bot.getPlaylistLoader().deletePlaylist(pname); + event.reply(event.getClient().getSuccess()+" Successfully deleted playlist `"+pname+"`!"); + } + catch(IOException e) + { + event.reply(event.getClient().getError()+" I was unable to delete the playlist: "+e.getLocalizedMessage()); + } + } + } + } \ No newline at end of file diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/owner/ListCmd.java b/src/main/java/com/jagrosh/jmusicbot/commands/owner/ListCmd.java index e66426631..4c3ff2fbe 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/owner/ListCmd.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/owner/ListCmd.java @@ -39,4 +39,4 @@ else if(list.isEmpty()) event.reply(builder.toString()); } } - } \ No newline at end of file + } diff --git a/src/main/java/com/jagrosh/jmusicbot/commands/owner/PlaylistCmd.java b/src/main/java/com/jagrosh/jmusicbot/commands/owner/PlaylistCmd.java index 598892d2a..40c66e068 100644 --- a/src/main/java/com/jagrosh/jmusicbot/commands/owner/PlaylistCmd.java +++ b/src/main/java/com/jagrosh/jmusicbot/commands/owner/PlaylistCmd.java @@ -21,8 +21,7 @@ import com.jagrosh.jdautilities.command.CommandEvent; import com.jagrosh.jmusicbot.Bot; import com.jagrosh.jmusicbot.commands.OwnerCommand; -import com.jagrosh.jmusicbot.playlist.PlaylistLoader; -import com.jagrosh.jmusicbot.playlist.Playlist; +import com.jagrosh.jmusicbot.playlist.PlaylistLoader.Playlist; /** * @@ -31,19 +30,27 @@ public class PlaylistCmd extends OwnerCommand { private final Bot bot; - public PlaylistCmd(Bot bot) - { - this.bot = bot; - this.guildOnly = false; - this.name = "playlist"; - this.arguments = ""; - this.help = "playlist management"; - this.aliases = bot.getConfig().getAliases(this.name); - this.children = new OwnerCommand[]{ - new ListCmd(), - new AppendlistCmd(), - new DeletelistCmd(), - new MakelistCmd(), + private boolean guildOnly; + private String arguments; + private String help; + private String[] aliases; + private String name; + private OwnerCommand[] children; + + + public PlaylistCmd(Bot bot) + { + this.bot = bot; + this.guildOnly = false; + this.name = "playlist"; + this.arguments = ""; + this.help = "playlist management"; + this.aliases = bot.getConfig().getAliases(this.name); + this.children = new OwnerCommand[]{ + new ListCmd(bot), + new AppendlistCmd(bot), + new DeletelistCmd(bot), + new MakelistCmd(bot), new DefaultlistCmd(bot) }; } @@ -58,176 +65,4 @@ public void execute(CommandEvent event) event.reply(builder.toString()); } - public class MakelistCmd extends OwnerCommand - { - public MakelistCmd() - { - this.name = "make"; - this.aliases = new String[]{"create"}; - this.help = "makes a new playlist"; - this.arguments = ""; - this.guildOnly = false; - } - - @Override - protected void execute(CommandEvent event) - { - String pname = event.getArgs().replaceAll("\\s+", "_"); - pname = pname.replaceAll("[*?|\\/\":<>]", ""); - if(pname == null || pname.isEmpty()) - { - event.replyError("Please provide a name for the playlist!"); - } - - PlaylistLoader playlistLoader = bot.getPlaylistLoader(); - - if(playlistLoader.getPlaylist(pname) == null) - { - try - { - playlistLoader.createPlaylist(pname); - event.reply(event.getClient().getSuccess()+" Successfully created playlist `"+pname+"`!"); - } - catch(IOException e) - { - event.reply(event.getClient().getError()+" I was unable to create the playlist: "+e.getLocalizedMessage()); - } - } - else - event.reply(event.getClient().getError()+" Playlist `"+pname+"` already exists!"); - } - } - - public class DeletelistCmd extends OwnerCommand - { - public DeletelistCmd() - { - this.name = "delete"; - this.aliases = new String[]{"remove"}; - this.help = "deletes an existing playlist"; - this.arguments = ""; - this.guildOnly = false; - } - - @Override - protected void execute(CommandEvent event) - { - String pname = event.getArgs().replaceAll("\\s+", "_"); - PlaylistLoader playlistLoader = bot.getPlaylistLoader(); - - if(playlistLoader.getPlaylist(pname)==null) - event.reply(event.getClient().getError()+" Playlist `"+pname+"` doesn't exist!"); - else - { - try - { - playlistLoader.deletePlaylist(pname); - event.reply(event.getClient().getSuccess()+" Successfully deleted playlist `"+pname+"`!"); - } - catch(IOException e) - { - event.reply(event.getClient().getError()+" I was unable to delete the playlist: "+e.getLocalizedMessage()); - } - } - } - } - - public class AppendlistCmd extends OwnerCommand - { - public AppendlistCmd() - { - this.name = "append"; - this.aliases = new String[]{"add"}; - this.help = "appends songs to an existing playlist"; - this.arguments = " | | ..."; - this.guildOnly = false; - } - - @Override - protected void execute(CommandEvent event) - { - String[] parts = event.getArgs().split("\\s+", 2); - if(parts.length<2) - { - event.reply(event.getClient().getError()+" Please include a playlist name and URLs to add!"); - return; - } - String pname = parts[0]; - PlaylistLoader playlistLoader = bot.getPlaylistLoader(); - Playlist playlist = playlistLoader.getPlaylist(pname); - - if(playlist==null) - event.reply(event.getClient().getError()+" Playlist `"+pname+"` doesn't exist!"); - else - { - StringBuilder builder = new StringBuilder(); - playlist.getItems().forEach(item -> builder.append("\r\n").append(item)); - String[] urls = parts[1].split("\\|"); - for(String url: urls) - { - String u = url.trim(); - if(u.startsWith("<") && u.endsWith(">")) - u = u.substring(1, u.length()-1); - builder.append("\r\n").append(u); - } - try - { - playlistLoader.writePlaylist(pname, builder.toString()); - event.reply(event.getClient().getSuccess()+" Successfully added "+urls.length+" items to playlist `"+pname+"`!"); - } - catch(IOException e) - { - event.reply(event.getClient().getError()+" I was unable to append to the playlist: "+e.getLocalizedMessage()); - } - } - } - } - - public class DefaultlistCmd extends AutoplaylistCmd - { - public DefaultlistCmd(Bot bot) - { - super(bot); - this.name = "setdefault"; - this.aliases = new String[]{"default"}; - this.arguments = ""; - this.guildOnly = true; - } - } - - public class ListCmd extends OwnerCommand - { - public ListCmd() - { - this.name = "all"; - this.aliases = new String[]{"available","list"}; - this.help = "lists all available playlists"; - this.guildOnly = true; - } - - @Override - protected void execute(CommandEvent event) - { - PlaylistLoader playlistLoader = bot.getPlaylistLoader(); - - if (!playlistLoader.folderExists()) { - playlistLoader.createFolder(); - } - if (!playlistLoader.folderExists()) { - event.reply(event.getClient().getWarning() + " Playlists folder does not exist and could not be created!"); - return; - } - List list = playlistLoader.getPlaylistNames(); - if(list==null) - event.reply(event.getClient().getError()+" Failed to load available playlists!"); - else if(list.isEmpty()) - event.reply(event.getClient().getWarning()+" There are no playlists in the Playlists folder!"); - else - { - StringBuilder builder = new StringBuilder(event.getClient().getSuccess()+" Available playlists:\n"); - list.forEach(str -> builder.append("`").append(str).append("` ")); - event.reply(builder.toString()); - } - } - } }