Fix view queue command and add currently playing command

This commit is contained in:
anthorob committed 2022-01-07 20:06:29 -05:00
1 parent 8031856bc2
commit 6ed956a053
5 files changed
+96 -22

No files matched your search

@@ -57,13 +57,10 @@ public class GuildManager {
}
public String getSetting(String key) {
reloadSettings();
return guildEntity.getSettings().getSettingByKey(key);
}
public String getSetting(GuildSettings key) {
reloadSettings();
System.out.println(key);
return guildEntity.getSettings().getSettingByKey(key.toString());
}
@@ -0,0 +1,75 @@
package netneutrality.command.music;
/*
* Copyright (c) anthorob
*
* This file is closed-source. It should not be distributed or copied in any way or form
*/
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.VoiceChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import netneutrality.command.AbstractMusicCommand;
import netneutrality.command.Visibility;
import netneutrality.music.MusicManager;
import netneutrality.utils.MessageFunction;
public class CurrentlyPlayingCommand extends AbstractMusicCommand {
@Override
public boolean isEnabled() {
return true;
}
@Override
public String getCommand() {
return "playing";
}
@Override
public String[] getAlias() {
return new String[0];
}
@Override
public String getUsage() {
return null;
}
@Override
public String getDescription() {
return "View currently playing track";
}
@Override
public Visibility getVisibility() {
return Visibility.CHANNEL;
}
@Override
public String execute(MessageReceivedEvent event, String[] args) {
Member member = event.getMember();
if (member.getVoiceState().inVoiceChannel()) {
MusicManager player = MusicManager.get(event.getGuild());
VoiceChannel vChannel = member.getVoiceState().getChannel();
if (player.isConnected()) {
if (player.isConnectedTo(vChannel)) {
if (player.getCurrentlyPlaying() != null) {
event.getTextChannel().sendMessageEmbeds(MessageFunction.buildCurrentlyPlayingMessage(player, member)).queue();
} else {
event.getTextChannel().sendMessage("Player is not playing any track right now").queue();
}
} else
event.getTextChannel().sendMessage("Player is not in your voice channel").queue();
} else {
event.getTextChannel().sendMessage("Player is not in a voice channel").queue();
}
} else
event.getTextChannel().sendMessage("You are not in a voice channel").queue();
return null;
}
}
@@ -33,7 +33,7 @@ public class LoadResultHandler implements AudioLoadResultHandler {
@Override
public void trackLoaded(AudioTrack audioTrack) {
if (!silent) {
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(audioTrack, user)).queue();
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(audioTrack, user, identifier)).queue();
}
scheduler.queue(audioTrack);
@@ -45,10 +45,10 @@ public class LoadResultHandler implements AudioLoadResultHandler {
if (identifier.startsWith("ytsearch:")) {
AudioTrack track = audioPlaylist.getTracks().get(0);
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(track, user)).queue();
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(track, user, identifier)).queue();
scheduler.queue(track);
} else {
channel.sendMessageEmbeds(MessageFunction.buildAddingPlaylistMessage(audioPlaylist, user)).queue();
channel.sendMessageEmbeds(MessageFunction.buildAddingPlaylistMessage(audioPlaylist, user, identifier)).queue();
for (AudioTrack track : audioPlaylist.getTracks()) {
scheduler.queue(track);
}
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -132,7 +133,9 @@ public class MusicManager {
public ArrayList<String> getAllQueuedTrack() {
ArrayList<String> queuedTracks = new ArrayList<>();
scheduler.getQueue().forEach((a) -> {
BlockingQueue<AudioTrack> queue = scheduler.getQueue();
queue.forEach((a) -> {
queuedTracks.add(a.getInfo().title);
});
@@ -58,21 +58,25 @@ public class MessageFunction {
return false;
}
public synchronized static MessageEmbed buildCurrentlyPlayingMessage(AudioTrack track, Member user) {
public synchronized static MessageEmbed buildCurrentlyPlayingMessage(MusicManager manager, Member user) {
AudioTrack current = manager.getCurrentlyPlaying();
EmbedBuilder message = new EmbedBuilder();
message.setThumbnail(String.format("https://img.youtube.com/vi/%s/default.jpg", track.getIdentifier()));
message.setAuthor("Link to track", String.format("https://youtu.be/%s", current.getIdentifier()));
message.setThumbnail(String.format("https://img.youtube.com/vi/%s/default.jpg", current.getIdentifier()));
message.setTitle("Currently playing:");
message.setColor(Color.BLUE);
message.addField("Track title: ", track.getInfo().title, false);
message.addField("Duration: ", DurationFormatUtils.formatDuration(track.getPosition(), "**HH:mm:ss**", true) + " / " + DurationFormatUtils.formatDuration(track.getDuration(), "**HH:mm:ss**", true), false);
message.addField("Track title: ", current.getInfo().title, false);
message.addField("Duration: ", DurationFormatUtils.formatDuration(current.getPosition(), "**HH:mm:ss**", true) + " / " + DurationFormatUtils.formatDuration(current.getDuration(), "**HH:mm:ss**", true), false);
message.setFooter("Requested by " + user.getUser().getName(), user.getUser().getAvatarUrl());
message.setTimestamp(OffsetDateTime.now());
return message.build();
}
public synchronized static MessageEmbed buildAddingTrackMessage(AudioTrack track, Member user) {
public synchronized static MessageEmbed buildAddingTrackMessage(AudioTrack track, Member user, String identifier) {
EmbedBuilder message = new EmbedBuilder();
message.setAuthor("Link to track", identifier);
message.setThumbnail(String.format("https://img.youtube.com/vi/%s/default.jpg", track.getIdentifier()));
message.setTitle("Adding track to queue..");
message.setColor(Color.BLUE);
@@ -84,8 +88,9 @@ public class MessageFunction {
return message.build();
}
public synchronized static MessageEmbed buildAddingPlaylistMessage(AudioPlaylist playlist, Member user) {
public synchronized static MessageEmbed buildAddingPlaylistMessage(AudioPlaylist playlist, Member user, String identifier) {
EmbedBuilder message = new EmbedBuilder();
message.setAuthor("Link to playlist", identifier);
message.setThumbnail(String.format("https://img.youtube.com/vi/%s/default.jpg", playlist.getSelectedTrack().getIdentifier()));
message.setTitle("Adding playlist to queue..");
message.setColor(Color.BLUE);
@@ -94,27 +99,21 @@ public class MessageFunction {
message.setFooter("Requested by " + user.getUser().getName(), user.getUser().getAvatarUrl());
message.setTimestamp(OffsetDateTime.now());
return message.build();
}
public static MessageEmbed buildViewQueueMessage(MusicManager manager, Member user) {
ArrayList<String> tracks = manager.getAllQueuedTrack();
Collections.reverse(tracks);
AudioTrack current = manager.getCurrentlyPlaying();
EmbedBuilder message = new EmbedBuilder();
message.setTitle("Current queue (showing max 10 items):");
message.setColor(Color.BLUE);
message.addField("Track #1 (Currently playing)", current.getInfo().title, false);
int index = 0;
int index = 1;
for (String track: tracks) {
String text = track;
if (Objects.equals(track, current.getInfo().title))
text += " (Currently playing)";
message.addField("Track #" + ++index, text, false);
message.addField("Track #" + ++index, track, false);
if (index == 10) break;
}