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) {
|
public String getSetting(String key) {
|
||||||
reloadSettings();
|
|
||||||
return guildEntity.getSettings().getSettingByKey(key);
|
return guildEntity.getSettings().getSettingByKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSetting(GuildSettings key) {
|
public String getSetting(GuildSettings key) {
|
||||||
reloadSettings();
|
|
||||||
System.out.println(key);
|
|
||||||
return guildEntity.getSettings().getSettingByKey(key.toString());
|
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
|
@Override
|
||||||
public void trackLoaded(AudioTrack audioTrack) {
|
public void trackLoaded(AudioTrack audioTrack) {
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(audioTrack, user)).queue();
|
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(audioTrack, user, identifier)).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
scheduler.queue(audioTrack);
|
scheduler.queue(audioTrack);
|
||||||
@@ -45,10 +45,10 @@ public class LoadResultHandler implements AudioLoadResultHandler {
|
|||||||
if (identifier.startsWith("ytsearch:")) {
|
if (identifier.startsWith("ytsearch:")) {
|
||||||
AudioTrack track = audioPlaylist.getTracks().get(0);
|
AudioTrack track = audioPlaylist.getTracks().get(0);
|
||||||
|
|
||||||
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(track, user)).queue();
|
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(track, user, identifier)).queue();
|
||||||
scheduler.queue(track);
|
scheduler.queue(track);
|
||||||
} else {
|
} else {
|
||||||
channel.sendMessageEmbeds(MessageFunction.buildAddingPlaylistMessage(audioPlaylist, user)).queue();
|
channel.sendMessageEmbeds(MessageFunction.buildAddingPlaylistMessage(audioPlaylist, user, identifier)).queue();
|
||||||
for (AudioTrack track : audioPlaylist.getTracks()) {
|
for (AudioTrack track : audioPlaylist.getTracks()) {
|
||||||
scheduler.queue(track);
|
scheduler.queue(track);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.BlockingQueue;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@@ -132,7 +133,9 @@ public class MusicManager {
|
|||||||
|
|
||||||
public ArrayList<String> getAllQueuedTrack() {
|
public ArrayList<String> getAllQueuedTrack() {
|
||||||
ArrayList<String> queuedTracks = new ArrayList<>();
|
ArrayList<String> queuedTracks = new ArrayList<>();
|
||||||
scheduler.getQueue().forEach((a) -> {
|
BlockingQueue<AudioTrack> queue = scheduler.getQueue();
|
||||||
|
|
||||||
|
queue.forEach((a) -> {
|
||||||
queuedTracks.add(a.getInfo().title);
|
queuedTracks.add(a.getInfo().title);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -58,21 +58,25 @@ public class MessageFunction {
|
|||||||
return false;
|
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();
|
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.setTitle("Currently playing:");
|
||||||
message.setColor(Color.BLUE);
|
message.setColor(Color.BLUE);
|
||||||
message.addField("Track title: ", track.getInfo().title, false);
|
message.addField("Track title: ", current.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("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.setFooter("Requested by " + user.getUser().getName(), user.getUser().getAvatarUrl());
|
||||||
message.setTimestamp(OffsetDateTime.now());
|
message.setTimestamp(OffsetDateTime.now());
|
||||||
|
|
||||||
return message.build();
|
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();
|
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.setThumbnail(String.format("https://img.youtube.com/vi/%s/default.jpg", track.getIdentifier()));
|
||||||
message.setTitle("Adding track to queue..");
|
message.setTitle("Adding track to queue..");
|
||||||
message.setColor(Color.BLUE);
|
message.setColor(Color.BLUE);
|
||||||
@@ -84,8 +88,9 @@ public class MessageFunction {
|
|||||||
return message.build();
|
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();
|
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.setThumbnail(String.format("https://img.youtube.com/vi/%s/default.jpg", playlist.getSelectedTrack().getIdentifier()));
|
||||||
message.setTitle("Adding playlist to queue..");
|
message.setTitle("Adding playlist to queue..");
|
||||||
message.setColor(Color.BLUE);
|
message.setColor(Color.BLUE);
|
||||||
@@ -94,27 +99,21 @@ public class MessageFunction {
|
|||||||
message.setFooter("Requested by " + user.getUser().getName(), user.getUser().getAvatarUrl());
|
message.setFooter("Requested by " + user.getUser().getName(), user.getUser().getAvatarUrl());
|
||||||
message.setTimestamp(OffsetDateTime.now());
|
message.setTimestamp(OffsetDateTime.now());
|
||||||
|
|
||||||
|
|
||||||
return message.build();
|
return message.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MessageEmbed buildViewQueueMessage(MusicManager manager, Member user) {
|
public static MessageEmbed buildViewQueueMessage(MusicManager manager, Member user) {
|
||||||
ArrayList<String> tracks = manager.getAllQueuedTrack();
|
ArrayList<String> tracks = manager.getAllQueuedTrack();
|
||||||
Collections.reverse(tracks);
|
|
||||||
AudioTrack current = manager.getCurrentlyPlaying();
|
AudioTrack current = manager.getCurrentlyPlaying();
|
||||||
|
|
||||||
EmbedBuilder message = new EmbedBuilder();
|
EmbedBuilder message = new EmbedBuilder();
|
||||||
message.setTitle("Current queue (showing max 10 items):");
|
message.setTitle("Current queue (showing max 10 items):");
|
||||||
message.setColor(Color.BLUE);
|
message.setColor(Color.BLUE);
|
||||||
|
message.addField("Track #1 (Currently playing)", current.getInfo().title, false);
|
||||||
|
|
||||||
int index = 0;
|
int index = 1;
|
||||||
for (String track: tracks) {
|
for (String track: tracks) {
|
||||||
String text = track;
|
message.addField("Track #" + ++index, track, false);
|
||||||
|
|
||||||
if (Objects.equals(track, current.getInfo().title))
|
|
||||||
text += " (Currently playing)";
|
|
||||||
|
|
||||||
message.addField("Track #" + ++index, text, false);
|
|
||||||
|
|
||||||
if (index == 10) break;
|
if (index == 10) break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user