Fix view queue command and add currently playing command
This commit is contained in:
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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user