From 880fd0bd9b9d2cf16bfd9a409a03e86d22bf1fc3 Mon Sep 17 00:00:00 2001 From: ZtereoHYPE <57519662+ZtereoHYPE@users.noreply.github.com> Date: Thu, 3 Feb 2022 23:12:17 +0100 Subject: [PATCH] change: reformat code --- .../ztereohype/ztereomusic/ZtereoMUSIC.java | 16 +++--- .../audio/AudioPlayerSendHandler.java | 9 +-- .../audio/CustomAudioLoadResultHandler.java | 15 ++--- .../ztereomusic/audio/TrackManager.java | 29 ++++------ .../ztereomusic/audio/TrackManagers.java | 7 ++- .../ztereomusic/command/Command.java | 1 + .../ztereomusic/command/CommandMeta.java | 3 +- .../ztereomusic/command/commands/Clear.java | 23 ++++---- .../command/commands/Disconnect.java | 21 ++++--- .../ztereomusic/command/commands/Pause.java | 26 ++++----- .../ztereomusic/command/commands/Ping.java | 17 +++--- .../ztereomusic/command/commands/Play.java | 38 +++++++------ .../ztereomusic/command/commands/Queue.java | 26 ++++----- .../ztereomusic/command/commands/Remove.java | 33 ++++++----- .../ztereomusic/command/commands/Skip.java | 23 ++++---- .../command/permissions/Check.java | 1 + .../command/permissions/VoiceChecks.java | 19 +++---- .../listeners/AloneDisconnectListener.java | 14 ++--- .../listeners/CommandListener.java | 17 ++++-- .../networking/SpotifyApiHelper.java | 55 ++++++++++--------- .../ztereomusic/networking/YoutubeSearch.java | 4 +- 21 files changed, 199 insertions(+), 198 deletions(-) diff --git a/src/main/java/codes/ztereohype/ztereomusic/ZtereoMUSIC.java b/src/main/java/codes/ztereohype/ztereomusic/ZtereoMUSIC.java index f533105..4994e29 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/ZtereoMUSIC.java +++ b/src/main/java/codes/ztereohype/ztereomusic/ZtereoMUSIC.java @@ -46,21 +46,19 @@ public class ZtereoMUSIC { return ZtereoMUSIC.INSTANCE; } - @SneakyThrows({ FileNotFoundException.class, LoginException.class, - InterruptedException.class, IOException.class }) + @SneakyThrows({ FileNotFoundException.class, LoginException.class, InterruptedException.class, IOException.class }) public static void main(String[] args) { ZtereoMUSIC ztereoMUSIC = ZtereoMUSIC.getInstance(); - EnumSet intents = EnumSet.of( - GatewayIntent.GUILD_MESSAGES, - GatewayIntent.GUILD_VOICE_STATES, - GatewayIntent.GUILD_EMOJIS - ); + EnumSet intents = EnumSet.of(GatewayIntent.GUILD_MESSAGES, + GatewayIntent.GUILD_VOICE_STATES, + GatewayIntent.GUILD_EMOJIS); ztereoMUSIC.setConfig(Config.loadFrom("./config.json5")); ztereoMUSIC.setJda(JDABuilder.createDefault(ztereoMUSIC.getConfig().getPropreties().get("token"), intents) - .enableCache(CacheFlag.VOICE_STATE) - .build().awaitReady()); + .enableCache(CacheFlag.VOICE_STATE) + .build() + .awaitReady()); ztereoMUSIC.setupAudio(); ztereoMUSIC.setCommands(); diff --git a/src/main/java/codes/ztereohype/ztereomusic/audio/AudioPlayerSendHandler.java b/src/main/java/codes/ztereohype/ztereomusic/audio/AudioPlayerSendHandler.java index cbf2610..7ac13c6 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/audio/AudioPlayerSendHandler.java +++ b/src/main/java/codes/ztereohype/ztereomusic/audio/AudioPlayerSendHandler.java @@ -14,19 +14,16 @@ public class AudioPlayerSendHandler implements AudioSendHandler { this.audioPlayer = audioPlayer; } - @Override - public boolean canProvide() { + @Override public boolean canProvide() { lastFrame = audioPlayer.provide(); return lastFrame != null; } - @Override - public ByteBuffer provide20MsAudio() { + @Override public ByteBuffer provide20MsAudio() { return ByteBuffer.wrap(lastFrame.getData()); } - @Override - public boolean isOpus() { + @Override public boolean isOpus() { return true; } } diff --git a/src/main/java/codes/ztereohype/ztereomusic/audio/CustomAudioLoadResultHandler.java b/src/main/java/codes/ztereohype/ztereomusic/audio/CustomAudioLoadResultHandler.java index 1c12ce1..fc8737b 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/audio/CustomAudioLoadResultHandler.java +++ b/src/main/java/codes/ztereohype/ztereomusic/audio/CustomAudioLoadResultHandler.java @@ -16,26 +16,23 @@ public class CustomAudioLoadResultHandler implements AudioLoadResultHandler { trackManager.setInfoChannel(messageChannel); } - @Override - public void trackLoaded(AudioTrack track) { + @Override public void trackLoaded(AudioTrack track) { this.trackManager.queue(track); } - @Override - public void playlistLoaded(AudioPlaylist playlist) { + @Override public void playlistLoaded(AudioPlaylist playlist) { for (AudioTrack track : playlist.getTracks()) { this.trackManager.queue(track); } } - @Override - public void noMatches() { + @Override public void noMatches() { this.messageChannel.sendMessage("I found no matches for that song!").queue(); } - @Override - public void loadFailed(FriendlyException throwable) { - this.messageChannel.sendMessage("Failed loading that audio. Try with a different source (eg. YouTube URL)").queue(); + @Override public void loadFailed(FriendlyException throwable) { + this.messageChannel.sendMessage("Failed loading that audio. Try with a different source (eg. YouTube URL)") + .queue(); } } diff --git a/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManager.java b/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManager.java index d401dbd..c0959ba 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManager.java +++ b/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManager.java @@ -82,21 +82,15 @@ public class TrackManager extends AudioEventAdapter { infoChannel.sendMessage("Playing next track: " + nextTrack.getInfo().title).queue(); } - @Override - public void onPlayerPause(AudioPlayer player) {} + @Override public void onPlayerPause(AudioPlayer player) {} - @Override - public void onPlayerResume(AudioPlayer player) {} + @Override public void onPlayerResume(AudioPlayer player) {} - @Override - public void onTrackStart(AudioPlayer player, AudioTrack track) {} + @Override public void onTrackStart(AudioPlayer player, AudioTrack track) {} - @Override - public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) { + @Override public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) { switch (endReason) { - case FINISHED -> { - playNext(); - } + case FINISHED -> playNext(); //todo: warning: this will create an infinite loop if a specific video has issues... case LOAD_FAILED -> { infoChannel.sendMessage("Loading failed, retrying...").queue(); @@ -111,7 +105,9 @@ public class TrackManager extends AudioEventAdapter { return; } - ZtereoMUSIC.getInstance().getPlayerManager().loadItem(identifier, new CustomAudioLoadResultHandler(this, infoChannel)); + ZtereoMUSIC.getInstance() + .getPlayerManager() + .loadItem(identifier, new CustomAudioLoadResultHandler(this, infoChannel)); } } @@ -122,14 +118,13 @@ public class TrackManager extends AudioEventAdapter { // endReason == CLEANUP: Player hasn't been queried for a while, if you want you can put a clone of this back to your queue } - @Override - public void onTrackException(AudioPlayer player, AudioTrack track, FriendlyException exception) { - infoChannel.sendMessage("Uh oh, a track did something strange. Ask the owner to check for errors in console. Skpping...").queue(); + @Override public void onTrackException(AudioPlayer player, AudioTrack track, FriendlyException exception) { + infoChannel.sendMessage( + "Uh oh, a track did something strange. Ask the owner to check for errors in console. Skpping...").queue(); System.out.println(exception.getCause().getMessage()); } - @Override - public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs) { + @Override public void onTrackStuck(AudioPlayer player, AudioTrack track, long thresholdMs) { infoChannel.sendMessage("Unable to play track " + track.getInfo().title + ". Skipping...").queue(); trackQueue.remove(track); playNext(); diff --git a/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManagers.java b/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManagers.java index 6d17424..1ceb884 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManagers.java +++ b/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManagers.java @@ -10,8 +10,7 @@ import javax.annotation.Nullable; public class TrackManagers { //note: maybe make infoChannel an optional? not sure how to make this better, ask rep - @Nullable - public static TrackManager getGuildTrackManager(Guild guild, @Nullable MessageChannel infoChannel) { + @Nullable public static TrackManager getGuildTrackManager(Guild guild, @Nullable MessageChannel infoChannel) { long guildId = guild.getIdLong(); TrackManager trackManager = ZtereoMUSIC.getInstance().getGuildTrackManagerMap().get(guildId); @@ -27,7 +26,9 @@ public class TrackManagers { return trackManager; } - public static TrackManager getOrCreateGuildTrackManager(Guild guild, MessageChannel infoChannel, VoiceChannel requestedChannel) { + public static TrackManager getOrCreateGuildTrackManager(Guild guild, + MessageChannel infoChannel, + VoiceChannel requestedChannel) { long guildId = guild.getIdLong(); TrackManager trackManager = ZtereoMUSIC.getInstance().getGuildTrackManagerMap().get(guildId); diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/Command.java b/src/main/java/codes/ztereohype/ztereomusic/command/Command.java index b7e66d6..61e2ffe 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/Command.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/Command.java @@ -5,5 +5,6 @@ import net.dv8tion.jda.api.events.message.MessageReceivedEvent; // TODO: add categories/groups and perms but in a smart way pls public interface Command { CommandMeta getMeta(); + void execute(MessageReceivedEvent messageRecievedEvent, String[] args); } diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/CommandMeta.java b/src/main/java/codes/ztereohype/ztereomusic/command/CommandMeta.java index ab9b78f..ed15348 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/CommandMeta.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/CommandMeta.java @@ -4,7 +4,8 @@ import codes.ztereohype.ztereomusic.command.permissions.VoiceChecks; import lombok.Builder; import lombok.Getter; -@Getter @Builder +@Getter +@Builder public class CommandMeta { private final String name; private final String description; diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Clear.java b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Clear.java index 312427d..f0a6b45 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Clear.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Clear.java @@ -15,20 +15,19 @@ public class Clear implements Command { public Clear() { this.meta = CommandMeta.builder() - .name("clear") - .aliases(new String[] {"deleteall"}) - .description("Clears the queue and stops playing.") - .isNsfw(false) - .isHidden(false) - .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, - VoiceChecks.BOT_PLAYING, - VoiceChecks.USER_CONNECTED, - VoiceChecks.SAME_VC_IF_CONNECTED }) - .build(); + .name("clear") + .aliases(new String[] { "deleteall" }) + .description("Clears the queue and stops playing.") + .isNsfw(false) + .isHidden(false) + .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, + VoiceChecks.BOT_PLAYING, + VoiceChecks.USER_CONNECTED, + VoiceChecks.SAME_VC_IF_CONNECTED }) + .build(); } - @Override - public void execute(MessageReceivedEvent messageEvent, String[] args) { + @Override public void execute(MessageReceivedEvent messageEvent, String[] args) { Guild guild = messageEvent.getGuild(); MessageChannel messageChannel = messageEvent.getChannel(); TrackManager trackManager = TrackManagers.getGuildTrackManager(guild, messageChannel); diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Disconnect.java b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Disconnect.java index 406763b..dfc44fd 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Disconnect.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Disconnect.java @@ -12,19 +12,18 @@ public class Disconnect implements Command { public Disconnect() { this.meta = CommandMeta.builder() - .name("disconnect") - .description("A command to kick the bot from the vc.") - .aliases(new String[] { "fuckoff", "bye" }) - .isNsfw(false) - .isHidden(false) - .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, - VoiceChecks.USER_CONNECTED, - VoiceChecks.SAME_VC_IF_CONNECTED }) - .build(); + .name("disconnect") + .description("A command to kick the bot from the vc.") + .aliases(new String[] { "fuckoff", "bye" }) + .isNsfw(false) + .isHidden(false) + .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, + VoiceChecks.USER_CONNECTED, + VoiceChecks.SAME_VC_IF_CONNECTED }) + .build(); } - @Override - public CommandMeta getMeta() { + @Override public CommandMeta getMeta() { return this.meta; } diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Pause.java b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Pause.java index 82edd77..4d0a1e7 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Pause.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Pause.java @@ -14,25 +14,23 @@ public class Pause implements Command { public Pause() { this.meta = CommandMeta.builder() - .name("pause") - .description("Pause the playing music") - .aliases(new String[] { "resume" }) - .isNsfw(false) - .isHidden(false) - .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, - VoiceChecks.BOT_PLAYING, - VoiceChecks.USER_CONNECTED, - VoiceChecks.SAME_VC_IF_CONNECTED }) - .build(); + .name("pause") + .description("Pause the playing music") + .aliases(new String[] { "resume" }) + .isNsfw(false) + .isHidden(false) + .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, + VoiceChecks.BOT_PLAYING, + VoiceChecks.USER_CONNECTED, + VoiceChecks.SAME_VC_IF_CONNECTED }) + .build(); } - @Override - public CommandMeta getMeta() { + @Override public CommandMeta getMeta() { return this.meta; } - @Override - public void execute(MessageReceivedEvent messageEvent, String[] args) { + @Override public void execute(MessageReceivedEvent messageEvent, String[] args) { Guild guild = messageEvent.getGuild(); MessageChannel messageChannel = messageEvent.getChannel(); TrackManager trackManager = TrackManagers.getGuildTrackManager(guild, messageChannel); diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Ping.java b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Ping.java index 8a64c92..566b51e 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Ping.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Ping.java @@ -10,17 +10,16 @@ public class Ping implements Command { public Ping() { this.meta = CommandMeta.builder() - .name("ping") - .description("A command to get pinged") - .aliases(new String[] { "pong", "pog" }) - .isNsfw(false) - .isHidden(false) - .checks(new VoiceChecks[0]) - .build(); + .name("ping") + .description("A command to get pinged") + .aliases(new String[] { "pong", "pog" }) + .isNsfw(false) + .isHidden(false) + .checks(new VoiceChecks[0]) + .build(); } - @Override - public CommandMeta getMeta() { + @Override public CommandMeta getMeta() { return this.meta; } diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Play.java b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Play.java index 48e1340..5fb9a6c 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Play.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Play.java @@ -9,8 +9,10 @@ import codes.ztereohype.ztereomusic.command.CommandMeta; import codes.ztereohype.ztereomusic.command.permissions.VoiceChecks; import codes.ztereohype.ztereomusic.networking.SpotifyApiHelper; import codes.ztereohype.ztereomusic.networking.YoutubeSearch; -import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; -import net.dv8tion.jda.api.entities.*; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.MessageChannel; +import net.dv8tion.jda.api.entities.VoiceChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.shadew.util.data.Pair; @@ -19,25 +21,25 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class Play implements Command { - private static final Pattern URL_PATTERN = Pattern.compile("^(http|https)://([a-z]+\\.[a-z]+)+/\\S+$", Pattern.CASE_INSENSITIVE); - private static final Pattern SPOTIFY_URL_PATTERN = Pattern.compile("^(?:https://open\\.spotify\\.com/(track|playlist)/)(\\S+(?:\\?si=\\S+))$"); + private static final Pattern URL_PATTERN = Pattern.compile("^(http|https)://([a-z]+\\.[a-z]+)+/\\S+$", + Pattern.CASE_INSENSITIVE); + private static final Pattern SPOTIFY_URL_PATTERN = Pattern.compile( + "^(?:https://open\\.spotify\\.com/(track|playlist)/)(\\S+(?:\\?si=\\S+))$"); private final CommandMeta meta; public Play() { this.meta = CommandMeta.builder() - .name("play") - .description("Play music!") - .aliases(new String[] { "p" }) - .isNsfw(false) - .isHidden(false) - .checks(new VoiceChecks[] { VoiceChecks.USER_CONNECTED, - VoiceChecks.SAME_VC_IF_CONNECTED }) - .build(); + .name("play") + .description("Play music!") + .aliases(new String[] { "p" }) + .isNsfw(false) + .isHidden(false) + .checks(new VoiceChecks[] { VoiceChecks.USER_CONNECTED, VoiceChecks.SAME_VC_IF_CONNECTED }) + .build(); } - @Override - public CommandMeta getMeta() { + @Override public CommandMeta getMeta() { return this.meta; } @@ -47,14 +49,14 @@ public class Play implements Command { Guild guild = messageEvent.getGuild(); VoiceChannel voiceChannel = Objects.requireNonNull(author.getVoiceState()).getChannel(); MessageChannel messageChannel = messageEvent.getChannel(); - AudioPlayerManager playerManager = ZtereoMUSIC.getInstance().getPlayerManager(); // if there are no args use as play/pause if (args.length == 0) { TrackManager trackManager = TrackManagers.getGuildTrackManager(guild, messageChannel); if (trackManager == null || !trackManager.getPlayer().isPaused()) { - messageChannel.sendMessage("What should I play? Type the name of the song after the command or use a YouTube link!").queue(); + messageChannel.sendMessage( + "What should I play? Type the name of the song after the command or use a YouTube link!").queue(); return; } @@ -96,6 +98,8 @@ public class Play implements Command { TrackManager trackManager = TrackManagers.getOrCreateGuildTrackManager(guild, messageChannel, voiceChannel); - playerManager.loadItem(identifier, new CustomAudioLoadResultHandler(trackManager, messageChannel)); + ZtereoMUSIC.getInstance() + .getPlayerManager() + .loadItem(identifier, new CustomAudioLoadResultHandler(trackManager, messageChannel)); } } diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Queue.java b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Queue.java index 4604d44..7940331 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Queue.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Queue.java @@ -19,32 +19,32 @@ public class Queue implements Command { public Queue() { this.meta = CommandMeta.builder() - .name("queue") - .description("See the queue") - .aliases(new String[] { "q" }) - .isNsfw(false) - .isHidden(false) - .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, - VoiceChecks.USER_CONNECTED, - VoiceChecks.SAME_VC_IF_CONNECTED }) - .build(); + .name("queue") + .description("See the queue") + .aliases(new String[] { "q" }) + .isNsfw(false) + .isHidden(false) + .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, + VoiceChecks.USER_CONNECTED, + VoiceChecks.SAME_VC_IF_CONNECTED }) + .build(); } - @Override - public CommandMeta getMeta() { + @Override public CommandMeta getMeta() { return this.meta; } public void execute(MessageReceivedEvent messageEvent, String[] args) { Guild guild = messageEvent.getGuild(); - VoiceChannel voiceChannel = Objects.requireNonNull(Objects.requireNonNull(messageEvent.getMember()).getVoiceState()).getChannel(); + VoiceChannel voiceChannel = Objects.requireNonNull(Objects.requireNonNull(messageEvent.getMember()) + .getVoiceState()).getChannel(); MessageChannel messageChannel = messageEvent.getChannel(); TrackManager trackManager = TrackManagers.getOrCreateGuildTrackManager(guild, messageChannel, voiceChannel); StringBuilder messageBuilder = new StringBuilder(); List trackList = trackManager.trackQueue; - for (AudioTrack track: trackList) { + for (AudioTrack track : trackList) { messageBuilder.append(trackList.indexOf(track) + 1).append(". "); messageBuilder.append(track.getInfo().title); messageBuilder.append(System.getProperty("line.separator")); diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Remove.java b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Remove.java index 81c6c71..b6880ea 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Remove.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Remove.java @@ -19,26 +19,27 @@ public class Remove implements Command { public Remove() { this.meta = CommandMeta.builder() - .name("remove") - .aliases(new String[] {"delete"}) - .description("Remove the chosen item.") - .isNsfw(false) - .isHidden(false) - .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, - VoiceChecks.BOT_PLAYING, - VoiceChecks.USER_CONNECTED, - VoiceChecks.SAME_VC_IF_CONNECTED }) - .build(); + .name("remove") + .aliases(new String[] { "delete" }) + .description("Remove the chosen item.") + .isNsfw(false) + .isHidden(false) + .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, + VoiceChecks.BOT_PLAYING, + VoiceChecks.USER_CONNECTED, + VoiceChecks.SAME_VC_IF_CONNECTED }) + .build(); } - @Override - public void execute(MessageReceivedEvent messageEvent, String[] args) { + @Override public void execute(MessageReceivedEvent messageEvent, String[] args) { Guild guild = messageEvent.getGuild(); MessageChannel messageChannel = messageEvent.getChannel(); // if there's the wrong amount of arguments send the usage if (args.length != 1) { - messageChannel.sendMessage("Usage: `remove [index of song to remove]/first/last`. Use the `queue` command to find the index.").queue(); + messageChannel.sendMessage( + "Usage: `remove [index of song to remove]/first/last`. Use the `queue` command to find the index.") + .queue(); return; } @@ -59,11 +60,13 @@ public class Remove implements Command { // if there is an integer assume it's the index if (isNumeric(index)) { parsedIndex = Integer.parseInt(index); - // if there is a known string get the index from the map + // if there is a known string get the index from the map } else if (indexAliases.containsKey(index.toLowerCase(Locale.ROOT))) { parsedIndex = indexAliases.get(index); } else { - messageChannel.sendMessage("Usage: `remove [index of song to remove]/first/last`. Use the `queue` command to find the index.").queue(); + messageChannel.sendMessage( + "Usage: `remove [index of song to remove]/first/last`. Use the `queue` command to find the index.") + .queue(); return; } diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Skip.java b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Skip.java index d512b89..297d812 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/commands/Skip.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/commands/Skip.java @@ -15,20 +15,19 @@ public class Skip implements Command { public Skip() { this.meta = CommandMeta.builder() - .name("skip") - .description("Skip the current track!") - .aliases(new String[] { "next" }) - .isNsfw(false) - .isHidden(false) - .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, - VoiceChecks.BOT_PLAYING, - VoiceChecks.USER_CONNECTED, - VoiceChecks.SAME_VC_IF_CONNECTED }) - .build(); + .name("skip") + .description("Skip the current track!") + .aliases(new String[] { "next" }) + .isNsfw(false) + .isHidden(false) + .checks(new VoiceChecks[] { VoiceChecks.BOT_CONNECTED, + VoiceChecks.BOT_PLAYING, + VoiceChecks.USER_CONNECTED, + VoiceChecks.SAME_VC_IF_CONNECTED }) + .build(); } - @Override - public CommandMeta getMeta() { + @Override public CommandMeta getMeta() { return this.meta; } diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/permissions/Check.java b/src/main/java/codes/ztereohype/ztereomusic/command/permissions/Check.java index f0a655c..2bf8457 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/permissions/Check.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/permissions/Check.java @@ -6,5 +6,6 @@ import net.dv8tion.jda.api.entities.VoiceChannel; public interface Check { boolean getResult(Member messageAuthor, VoiceChannel connectedChannel, TrackManager trackManager); + String getErrorCode(); } \ No newline at end of file diff --git a/src/main/java/codes/ztereohype/ztereomusic/command/permissions/VoiceChecks.java b/src/main/java/codes/ztereohype/ztereomusic/command/permissions/VoiceChecks.java index 2abbed5..d9bb06e 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/command/permissions/VoiceChecks.java +++ b/src/main/java/codes/ztereohype/ztereomusic/command/permissions/VoiceChecks.java @@ -15,20 +15,20 @@ public enum VoiceChecks { return connectedChannel != null; } - @Override - public String getErrorCode() { + @Override public String getErrorCode() { return "I am not playing anything."; } }), BOT_PLAYING(new Check() { @Override - public boolean getResult(Member messageAuthor, VoiceChannel connectedChannel, @Nullable TrackManager trackManager) { + public boolean getResult(Member messageAuthor, + VoiceChannel connectedChannel, + @Nullable TrackManager trackManager) { return trackManager != null && trackManager.getPlayer().getPlayingTrack() != null; } - @Override - public String getErrorCode() { + @Override public String getErrorCode() { return "I am not playing anything."; } }), @@ -40,8 +40,7 @@ public enum VoiceChecks { return messageAuthor.getVoiceState().inVoiceChannel(); } - @Override - public String getErrorCode() { + @Override public String getErrorCode() { return "You are not connected to a voice channel."; } }), @@ -54,8 +53,7 @@ public enum VoiceChecks { return Objects.equals(messageAuthor.getVoiceState().getChannel(), connectedChannel); } - @Override - public String getErrorCode() { + @Override public String getErrorCode() { return "We are not in the same voice channel."; } }), @@ -67,8 +65,7 @@ public enum VoiceChecks { return false; } - @Override - public String getErrorCode() { + @Override public String getErrorCode() { return "You don't have the *DJ role*."; } }); diff --git a/src/main/java/codes/ztereohype/ztereomusic/listeners/AloneDisconnectListener.java b/src/main/java/codes/ztereohype/ztereomusic/listeners/AloneDisconnectListener.java index e50bec1..de29a65 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/listeners/AloneDisconnectListener.java +++ b/src/main/java/codes/ztereohype/ztereomusic/listeners/AloneDisconnectListener.java @@ -9,7 +9,10 @@ import net.dv8tion.jda.api.events.guild.voice.GuildVoiceLeaveEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import javax.annotation.Nonnull; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; public class AloneDisconnectListener extends ListenerAdapter { //sorry reperak, i tried using a list of pairs but iterating over it to find it in onGuildVoiceLeave is too much effort @@ -18,15 +21,13 @@ public class AloneDisconnectListener extends ListenerAdapter { public AloneDisconnectListener() { Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { - @Override - public void run() { + @Override public void run() { checkIfAloneAfterThreshold(); } }, 5000, 5000); } - @Override - public void onGuildVoiceLeave(@Nonnull GuildVoiceLeaveEvent event) { + @Override public void onGuildVoiceLeave(@Nonnull GuildVoiceLeaveEvent event) { Guild guild = event.getGuild(); Member leavingMember = event.getMember(); Member ztereoBotMember = event.getGuild().getMember(ZtereoMUSIC.getInstance().getJda().getSelfUser()); @@ -47,8 +48,7 @@ public class AloneDisconnectListener extends ListenerAdapter { } } - @Override - public void onGuildVoiceJoin(@Nonnull GuildVoiceJoinEvent event) { + @Override public void onGuildVoiceJoin(@Nonnull GuildVoiceJoinEvent event) { Guild guild = event.getGuild(); if (guild.getAudioManager().getConnectedChannel() == null) return; // if we're not connected ignore diff --git a/src/main/java/codes/ztereohype/ztereomusic/listeners/CommandListener.java b/src/main/java/codes/ztereohype/ztereomusic/listeners/CommandListener.java index cfd9201..0ce2fed 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/listeners/CommandListener.java +++ b/src/main/java/codes/ztereohype/ztereomusic/listeners/CommandListener.java @@ -4,7 +4,9 @@ import codes.ztereohype.ztereomusic.ZtereoMUSIC; import codes.ztereohype.ztereomusic.audio.TrackManagers; import codes.ztereohype.ztereomusic.command.Command; import codes.ztereohype.ztereomusic.command.permissions.VoiceChecks; -import net.dv8tion.jda.api.entities.*; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.entities.MessageChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; @@ -18,8 +20,7 @@ public class CommandListener extends ListenerAdapter { private static final Map COMMAND_MAP = ZtereoMUSIC.getInstance().getCommandMap(); private static final Map COMMAND_ALIASES = ZtereoMUSIC.getInstance().getCommandAliases(); - @Override - public void onMessageReceived(@Nonnull MessageReceivedEvent event) { + @Override public void onMessageReceived(@Nonnull MessageReceivedEvent event) { Message message = event.getMessage(); MessageChannel messageChannel = event.getChannel(); String content = message.getContentRaw(); @@ -47,7 +48,10 @@ public class CommandListener extends ListenerAdapter { // check if the command is allowed and stop at first failure (order is important) for (VoiceChecks checkEnum : command.getMeta().getChecks()) { - if (!checkEnum.getCheck().getResult(message.getMember(), guild.getAudioManager().getConnectedChannel(), TrackManagers.getGuildTrackManager(guild, messageChannel))) { + if (!checkEnum.getCheck() + .getResult(message.getMember(), + guild.getAudioManager().getConnectedChannel(), + TrackManagers.getGuildTrackManager(guild, messageChannel))) { message.reply(checkEnum.getCheck().getErrorCode()).queue(); return; } @@ -58,7 +62,10 @@ public class CommandListener extends ListenerAdapter { command.execute(event, args); } catch (Exception e) { //todo: nicer embed with error pls - message.getChannel().sendMessage("uh oh something really bad happened and yeah so yeah everything is aborted and cancelled i give up this is too hard kthxbye").queue(); + message.getChannel() + .sendMessage( + "uh oh something really bad happened and yeah so yeah everything is aborted and cancelled i give up this is too hard kthxbye") + .queue(); throw e; } } diff --git a/src/main/java/codes/ztereohype/ztereomusic/networking/SpotifyApiHelper.java b/src/main/java/codes/ztereohype/ztereomusic/networking/SpotifyApiHelper.java index a1e77ad..20cb857 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/networking/SpotifyApiHelper.java +++ b/src/main/java/codes/ztereohype/ztereomusic/networking/SpotifyApiHelper.java @@ -20,9 +20,16 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class SpotifyApiHelper { - private static final String CLIENT_ID = ZtereoMUSIC.getInstance().getConfig().getPropreties().get("spotify_client_id"); - private static final String CLIENT_SECRET = ZtereoMUSIC.getInstance().getConfig().getPropreties().get("spotify_client_secret"); - private static final Pattern IDENTIFIER_PATTERN = Pattern.compile("(?:(?<=https://open\\.spotify\\.com/track/)|(?<=https://open\\.spotify\\.com/playlist/))(\\S+(?=\\?si=\\S))"); + private static final String CLIENT_ID = ZtereoMUSIC.getInstance() + .getConfig() + .getPropreties() + .get("spotify_client_id"); + private static final String CLIENT_SECRET = ZtereoMUSIC.getInstance() + .getConfig() + .getPropreties() + .get("spotify_client_secret"); + private static final Pattern IDENTIFIER_PATTERN = Pattern.compile( + "(?:(?<=https://open\\.spotify\\.com/track/)|(?<=https://open\\.spotify\\.com/playlist/))(\\S+(?=\\?si=\\S))"); private static String spotifyToken; @@ -31,8 +38,7 @@ public class SpotifyApiHelper { public static void startTokenTimer() { Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { - @Override - public void run() { + @Override public void run() { spotifyToken = null; //remove old outdated token Optional parsedToken = getToken(); @@ -43,18 +49,19 @@ public class SpotifyApiHelper { spotifyToken = parsedToken.get(); } - }, 0, 3599*1000); + }, 0, 3599 * 1000); } - @SneakyThrows - private static Optional getToken() { + @SneakyThrows private static Optional getToken() { HttpClient client = HttpClient.newHttpClient(); - HttpRequest request = HttpRequest.newBuilder( - URI.create("https://accounts.spotify.com/api/token?grant_type=client_credentials")) - .POST(HttpRequest.BodyPublishers.ofString("")) - .header("Authorization", "Basic " + Base64.getEncoder().encodeToString((CLIENT_ID + ":" + CLIENT_SECRET).getBytes(StandardCharsets.UTF_8.toString()))) - .header("Content-Type", "application/x-www-form-urlencoded") - .build(); + HttpRequest request = HttpRequest.newBuilder(URI.create( + "https://accounts.spotify.com/api/token?grant_type=client_credentials")) + .POST(HttpRequest.BodyPublishers.ofString("")) + .header("Authorization", + "Basic " + Base64.getEncoder() + .encodeToString((CLIENT_ID + ":" + CLIENT_SECRET).getBytes(StandardCharsets.UTF_8.toString()))) + .header("Content-Type", "application/x-www-form-urlencoded") + .build(); JsonPath tokenPath = JsonPath.parse("access_token"); try { @@ -86,30 +93,28 @@ public class SpotifyApiHelper { return Pair.of(false, "Could not parse Spotify link. Try entering the song title directly."); } - String query = "https://api.spotify.com/v1/tracks?ids=" - + spotifyIdentifier + "&market=ES"; //espaƱaaaa + String query = "https://api.spotify.com/v1/tracks?ids=" + spotifyIdentifier + "&market=ES"; //espaƱaaaa HttpClient client = HttpClient.newHttpClient(); - HttpRequest request = HttpRequest.newBuilder( - URI.create(query)) - .GET() - .header("Authorization", "Bearer " + spotifyToken) - .header("Content-Type", "application/json") - .build(); + HttpRequest request = HttpRequest.newBuilder(URI.create(query)) + .GET() + .header("Authorization", "Bearer " + spotifyToken) + .header("Content-Type", "application/json") + .build(); JsonPath titlePath = JsonPath.parse("tracks[0].name"); -// JsonPath authorPath = JsonPath.parse("tracks[0].artists[0].name"); + // JsonPath authorPath = JsonPath.parse("tracks[0].artists[0].name"); try { HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); String title = JSON.parse(response.body()).query(titlePath).asString(); -// String author = JSON.parse(response.body()).query(authorPath).asString(); + // String author = JSON.parse(response.body()).query(authorPath).asString(); return Pair.of(true, title); } catch (IOException | InterruptedException e) { e.printStackTrace(); - return Pair.of(false,"Something wrong happened with the spotify request."); + return Pair.of(false, "Something wrong happened with the spotify request."); } } } diff --git a/src/main/java/codes/ztereohype/ztereomusic/networking/YoutubeSearch.java b/src/main/java/codes/ztereohype/ztereomusic/networking/YoutubeSearch.java index 6c10d6c..1084176 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/networking/YoutubeSearch.java +++ b/src/main/java/codes/ztereohype/ztereomusic/networking/YoutubeSearch.java @@ -14,8 +14,8 @@ public class YoutubeSearch { private static final Json JSON = Json.json(); public static Pair query(String title) { - String query = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=%22" - + title.replace(' ', '+') + "%22&type=video&key=" + API_KEY; + String query = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=%22" + title.replace(' ', + '+') + "%22&type=video&key=" + API_KEY; String jsonResponse; try {