Fix playlist loading and prepare for JDA 5
This commit is contained in:
1 parent
5e5539914d
commit
8031856bc2
16 files changed
+200
-63
No files matched your search
@@ -136,13 +136,11 @@
|
|||||||
<version>2.17.0</version>
|
<version>2.17.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- To remove, old package -->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-logging</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-logging</artifactId>
|
<artifactId>commons-lang3</artifactId>
|
||||||
<version>1.2</version>
|
<version>3.12.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.sedmelluq</groupId>
|
<groupId>com.sedmelluq</groupId>
|
||||||
<artifactId>lavaplayer</artifactId>
|
<artifactId>lavaplayer</artifactId>
|
||||||
|
|||||||
@@ -19,6 +19,21 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
|
|
||||||
public class GuildManager {
|
public class GuildManager {
|
||||||
|
|
||||||
|
public enum GuildSettings {
|
||||||
|
MUSIC_ROLE("muisc.role"), MUSIC_CHANNEL("music.channel"), BLACKLIST_CHANNELS("blacklist.exclude.channels");
|
||||||
|
|
||||||
|
private final String setting;
|
||||||
|
|
||||||
|
GuildSettings(String setting) {
|
||||||
|
this.setting = setting;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return setting;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static final Logger logger = LoggerFactory.getLogger(GuildManager.class);
|
public static final Logger logger = LoggerFactory.getLogger(GuildManager.class);
|
||||||
private static final Map<String, GuildManager> managers = new ConcurrentHashMap<>();
|
private static final Map<String, GuildManager> managers = new ConcurrentHashMap<>();
|
||||||
private final Guild guild;
|
private final Guild guild;
|
||||||
@@ -46,6 +61,12 @@ public class GuildManager {
|
|||||||
return guildEntity.getSettings().getSettingByKey(key);
|
return guildEntity.getSettings().getSettingByKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSetting(GuildSettings key) {
|
||||||
|
reloadSettings();
|
||||||
|
System.out.println(key);
|
||||||
|
return guildEntity.getSettings().getSettingByKey(key.toString());
|
||||||
|
}
|
||||||
|
|
||||||
public void reloadSettings() {
|
public void reloadSettings() {
|
||||||
guildEntity.reloadSettings();
|
guildEntity.reloadSettings();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ public abstract class AbstractMusicCommand extends AbstractCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canBeExecutedBy(Guild guild, Member member) {
|
public boolean canBeExecutedBy(Guild guild, Member member) {
|
||||||
String roleDb = GuildManager.getManager(guild).getSetting("music.role");
|
String roleDb = GuildManager.getManager(guild).getSetting(GuildManager.GuildSettings.MUSIC_ROLE);
|
||||||
System.out.println(roleDb);
|
System.out.println(roleDb);
|
||||||
|
|
||||||
if (!roleDb.isEmpty()) {
|
if (roleDb != null && !roleDb.isEmpty()) {
|
||||||
Role neededRole = MusicBot.getJDA().getRoleById(roleDb);
|
Role neededRole = guild.getRoleById(roleDb);
|
||||||
return member.getRoles().contains(neededRole);
|
return member.getRoles().contains(neededRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,17 +15,6 @@ import java.util.HashMap;
|
|||||||
|
|
||||||
public class HelpCommand extends AbstractCommand {
|
public class HelpCommand extends AbstractCommand {
|
||||||
|
|
||||||
public HelpCommand() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String execute(MessageReceivedEvent event, String[] args) {
|
|
||||||
sendHelp(CommandManager.commands, CommandManager.commandsAlias, event.getAuthor(), event.getChannel());
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean needAdmin() {
|
public boolean needAdmin() {
|
||||||
return false;
|
return false;
|
||||||
@@ -66,11 +55,14 @@ public class HelpCommand extends AbstractCommand {
|
|||||||
return CommandType.UTILITY;
|
return CommandType.UTILITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendHelp(HashMap<String, AbstractCommand> commands, HashMap<String, AbstractCommand> alias, User user, MessageChannel channel) {
|
@Override
|
||||||
|
public String execute(MessageReceivedEvent event, String[] args) {
|
||||||
|
|
||||||
if (channel instanceof TextChannel)
|
if (event.getChannel() instanceof TextChannel)
|
||||||
channel.sendMessage(new MessageBuilder().append(user).append(" help has been sent your way!").build()).queue();
|
event.getChannel().sendMessage(new MessageBuilder().append(event.getAuthor()).append(" help has been sent your way!").build()).queue();
|
||||||
|
|
||||||
user.openPrivateChannel().queue(t -> t.sendMessage(MessageFunction.buildHelpMessage(commands, alias)).queue());
|
event.getAuthor().openPrivateChannel().queue(t -> t.sendMessageEmbeds(MessageFunction.buildHelpMessage(CommandManager.commands, CommandManager.commandsAlias)).queue());
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,6 @@ import java.io.IOException;
|
|||||||
|
|
||||||
public class CryptoPriceCommand extends AbstractCommand {
|
public class CryptoPriceCommand extends AbstractCommand {
|
||||||
|
|
||||||
private String currency = "USD";
|
|
||||||
private final String baseURL = "https://min-api.cryptocompare.com/data/price";
|
private final String baseURL = "https://min-api.cryptocompare.com/data/price";
|
||||||
private String price = "";
|
private String price = "";
|
||||||
|
|
||||||
@@ -57,12 +56,13 @@ public class CryptoPriceCommand extends AbstractCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String execute(MessageReceivedEvent event, String[] args) {
|
public String execute(MessageReceivedEvent event, String[] args) {
|
||||||
|
String currency = "USD";
|
||||||
|
|
||||||
if (args.length > 0) {
|
if (args.length > 0) {
|
||||||
|
|
||||||
if (args.length == 2) {
|
if (args.length == 2) {
|
||||||
if (Currency.isCurrency(args[1].toUpperCase()))
|
if (Currency.isCurrency(args[1].toUpperCase()))
|
||||||
this.currency = args[1].toUpperCase();
|
currency = args[1].toUpperCase();
|
||||||
else {
|
else {
|
||||||
event.getTextChannel().sendMessage("Please enter a valid currency").queue();
|
event.getTextChannel().sendMessage("Please enter a valid currency").queue();
|
||||||
return null;
|
return null;
|
||||||
@@ -70,11 +70,12 @@ public class CryptoPriceCommand extends AbstractCommand {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String finalCurrency = currency;
|
||||||
event.getTextChannel().sendMessage("Retreiving price, please wait...").queue(t -> {
|
event.getTextChannel().sendMessage("Retreiving price, please wait...").queue(t -> {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
WebModule ethereumHttp = new WebModule(baseURL + "?fsym=" + args[0] + "&tsyms=" + currency.toUpperCase()).request();
|
WebModule ethereumHttp = new WebModule(baseURL + "?fsym=" + args[0] + "&tsyms=" + finalCurrency.toUpperCase()).request();
|
||||||
price = Double.toString(ethereumHttp.getAsObject().getDouble(currency));
|
price = Double.toString(ethereumHttp.getAsObject().getDouble(finalCurrency));
|
||||||
|
|
||||||
if (price == null)
|
if (price == null)
|
||||||
throw new IllegalArgumentException("Crypto doesn't exist");
|
throw new IllegalArgumentException("Crypto doesn't exist");
|
||||||
@@ -84,7 +85,7 @@ public class CryptoPriceCommand extends AbstractCommand {
|
|||||||
t.editMessage("Error getting price!").queue();
|
t.editMessage("Error getting price!").queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
t.editMessage(String.format("The current price of %s in %s is %s$", args[0].toUpperCase(), currency, price)).queue();
|
t.editMessage(String.format("The current price of %s in %s is %s$", args[0].toUpperCase(), finalCurrency, price)).queue();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,12 +30,12 @@ public class PruneCommand extends AbstractCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUsage() {
|
public String getUsage() {
|
||||||
return "Prune n messages from the channel you are currently on";
|
return "<number of messages to delete (max 2499)>";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return null;
|
return "Delete n messages from the channel you are currently on";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -59,9 +59,9 @@ public class DeleteQueueCommand extends AbstractMusicCommand {
|
|||||||
|
|
||||||
if (player.isConnected()) {
|
if (player.isConnected()) {
|
||||||
if (player.isConnectedTo(vChannel)) {
|
if (player.isConnectedTo(vChannel)) {
|
||||||
int queueSize = player.getScheduler().queue.size();
|
int queueSize = player.getScheduler().getQueue().size();
|
||||||
if (queueSize > 0) {
|
if (queueSize > 0) {
|
||||||
player.getScheduler().queue.clear();
|
player.getScheduler().getQueue().clear();
|
||||||
event.getTextChannel().sendMessage("Removed " + queueSize + (queueSize > 1 ? " tracks" : "track") + " from the queue").queue();
|
event.getTextChannel().sendMessage("Removed " + queueSize + (queueSize > 1 ? " tracks" : "track") + " from the queue").queue();
|
||||||
} else {
|
} else {
|
||||||
event.getTextChannel().sendMessage("Queue is empty!").queue();
|
event.getTextChannel().sendMessage("Queue is empty!").queue();
|
||||||
|
|||||||
@@ -32,12 +32,12 @@ public class PlayCommand extends AbstractMusicCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUsage() {
|
public String getUsage() {
|
||||||
return null;
|
return "<url>";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return null;
|
return "Get the party going";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
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 ViewQueueCommand extends AbstractMusicCommand {
|
||||||
|
@Override
|
||||||
|
public boolean needAdmin() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCommand() {
|
||||||
|
return "viewqueue";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getAlias() {
|
||||||
|
return new String[]{"viewq"};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUsage() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@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)) {
|
||||||
|
int queueSize = player.getScheduler().getQueue().size();
|
||||||
|
if (queueSize > 0) {
|
||||||
|
|
||||||
|
event.getTextChannel().sendMessageEmbeds(MessageFunction.buildViewQueueMessage(player, member)).queue();
|
||||||
|
} else {
|
||||||
|
event.getTextChannel().sendMessage("Queue is empty!").queue();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else
|
||||||
|
event.getTextChannel().sendMessage("Not in your voice channel").queue();
|
||||||
|
} else {
|
||||||
|
event.getTextChannel().sendMessage("Player is not connected").queue();
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
event.getTextChannel().sendMessage("You are not in a voice channel").queue();
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -84,7 +84,7 @@ public class DatabaseCommand extends AbstractCommand {
|
|||||||
embed.setDescription(
|
embed.setDescription(
|
||||||
"Message from " + message.getSender() + " on the channel " + message.getChannelName());
|
"Message from " + message.getSender() + " on the channel " + message.getChannelName());
|
||||||
embed.addField("Message: ", "" + message.getMessage(), false);
|
embed.addField("Message: ", "" + message.getMessage(), false);
|
||||||
event.getTextChannel().sendMessage(embed.build()).queue();
|
event.getTextChannel().sendMessageEmbeds(embed.build()).queue();
|
||||||
} else {
|
} else {
|
||||||
User user = event.getJDA().getUserById(args[1]);
|
User user = event.getJDA().getUserById(args[1]);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
@@ -101,7 +101,7 @@ public class DatabaseCommand extends AbstractCommand {
|
|||||||
}
|
}
|
||||||
embed.setFooter("Guild : " + event.getGuild().getName(), null);
|
embed.setFooter("Guild : " + event.getGuild().getName(), null);
|
||||||
|
|
||||||
event.getAuthor().openPrivateChannel().queue(t -> t.sendMessage(embed.build()).queue());
|
event.getAuthor().openPrivateChannel().queue(t -> t.sendMessageEmbeds(embed.build()).queue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public class EditHandler extends ListenerAdapter {
|
|||||||
|
|
||||||
if (event.getAuthor().isBot()) return;
|
if (event.getAuthor().isBot()) return;
|
||||||
|
|
||||||
MTableModel table = DBController.get().prepareAndExecuteAsync("SELECT channelId FROM logging WHERE serverId = ? AND enabled = 1", event.getGuild().getId()).blocking();
|
MTableModel table = DBController.get().prepareAndExecuteAsync("SELECT channel_id FROM logging WHERE guild_id = ? AND enabled = 1", event.getGuild().getId()).blocking();
|
||||||
|
|
||||||
Object logChannel = table.getRowModel(0).getItem(0);
|
Object logChannel = table.getRowModel(0).getItem(0);
|
||||||
if (logChannel != null) {
|
if (logChannel != null) {
|
||||||
@@ -42,7 +42,7 @@ public class EditHandler extends ListenerAdapter {
|
|||||||
|
|
||||||
editEmbed.setFooter("ID : " + event.getMessageId(), null);
|
editEmbed.setFooter("ID : " + event.getMessageId(), null);
|
||||||
editEmbed.setTimestamp(event.getMessage().getTimeCreated());
|
editEmbed.setTimestamp(event.getMessage().getTimeCreated());
|
||||||
event.getJDA().getTextChannelById(logChannel.toString()).sendMessage(editEmbed.build()).queue();
|
event.getJDA().getTextChannelById(logChannel.toString()).sendMessageEmbeds(editEmbed.build()).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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.sendMessage(MessageFunction.buildAddingTrackMessage(audioTrack, user)).queue();
|
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(audioTrack, user)).queue();
|
||||||
}
|
}
|
||||||
|
|
||||||
scheduler.queue(audioTrack);
|
scheduler.queue(audioTrack);
|
||||||
@@ -45,9 +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.sendMessage(MessageFunction.buildAddingTrackMessage(track, user)).queue();
|
channel.sendMessageEmbeds(MessageFunction.buildAddingTrackMessage(track, user)).queue();
|
||||||
scheduler.queue(track);
|
scheduler.queue(track);
|
||||||
} else {
|
} else {
|
||||||
|
channel.sendMessageEmbeds(MessageFunction.buildAddingPlaylistMessage(audioPlaylist, user)).queue();
|
||||||
for (AudioTrack track : audioPlaylist.getTracks()) {
|
for (AudioTrack track : audioPlaylist.getTracks()) {
|
||||||
scheduler.queue(track);
|
scheduler.queue(track);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import netneutrality.ThreadManager;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
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;
|
||||||
@@ -64,8 +65,9 @@ public class MusicManager {
|
|||||||
guild.getAudioManager().openAudioConnection(vChannel);
|
guild.getAudioManager().openAudioConnection(vChannel);
|
||||||
|
|
||||||
((ScheduledExecutorService) ThreadManager.getExecutor("music", ThreadManager.ExecutorType.SCHEDULED, 5)).scheduleWithFixedDelay(() -> {
|
((ScheduledExecutorService) ThreadManager.getExecutor("music", ThreadManager.ExecutorType.SCHEDULED, 5)).scheduleWithFixedDelay(() -> {
|
||||||
if ((getCurrentlyPlaying() == null && scheduler.queue.isEmpty()) || vChannel.getMembers().size() == 0)
|
if ((getCurrentlyPlaying() == null && scheduler.getQueue().isEmpty()) || vChannel.getMembers().size() == 0) {
|
||||||
leave();
|
leave();
|
||||||
|
}
|
||||||
}, 120, 120, TimeUnit.SECONDS);
|
}, 120, 120, TimeUnit.SECONDS);
|
||||||
} else
|
} else
|
||||||
logger.error("Error connecting!");
|
logger.error("Error connecting!");
|
||||||
@@ -81,20 +83,19 @@ public class MusicManager {
|
|||||||
|
|
||||||
public synchronized void leave() {
|
public synchronized void leave() {
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
player.destroy();
|
player.stopTrack();
|
||||||
|
guild.getAudioManager().closeAudioConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
scheduler.resetTopic();
|
scheduler.resetTopic();
|
||||||
|
|
||||||
if (guild != null) {
|
|
||||||
guild.getAudioManager().closeAudioConnection();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void disconnectPlayers() {
|
public static void disconnectPlayers() {
|
||||||
for (MusicManager mm : managers.values()) {
|
for (MusicManager mm : managers.values()) {
|
||||||
mm.leave();
|
mm.leave();
|
||||||
|
mm.player.destroy();
|
||||||
|
mm.scheduler.getQueue().clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +115,7 @@ public class MusicManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void skip() {
|
public synchronized void skip() {
|
||||||
if (!scheduler.queue.isEmpty()) {
|
if (!scheduler.getQueue().isEmpty()) {
|
||||||
scheduler.nextTrack();
|
scheduler.nextTrack();
|
||||||
} else {
|
} else {
|
||||||
leave();
|
leave();
|
||||||
@@ -129,9 +130,11 @@ public class MusicManager {
|
|||||||
return scheduler;
|
return scheduler;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getAllQueuedTrack() {
|
public ArrayList<String> getAllQueuedTrack() {
|
||||||
List<String> queuedTracks = new LinkedList<>();
|
ArrayList<String> queuedTracks = new ArrayList<>();
|
||||||
scheduler.queue.forEach((a) -> queuedTracks.add(a.getInfo().title));
|
scheduler.getQueue().forEach((a) -> {
|
||||||
|
queuedTracks.add(a.getInfo().title);
|
||||||
|
});
|
||||||
|
|
||||||
return queuedTracks;
|
return queuedTracks;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class SourceFinder {
|
|||||||
switch (getSource(url)) {
|
switch (getSource(url)) {
|
||||||
|
|
||||||
case Youtube:
|
case Youtube:
|
||||||
identifier = youtubeMatcher.group(1);
|
identifier = url;
|
||||||
break;
|
break;
|
||||||
case Soundcloud:
|
case Soundcloud:
|
||||||
identifier = url;
|
identifier = url;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public class TrackScheduler extends AudioEventAdapter {
|
|||||||
|
|
||||||
private final AudioPlayer player;
|
private final AudioPlayer player;
|
||||||
private TextChannel channel;
|
private TextChannel channel;
|
||||||
public final BlockingQueue<AudioTrack> queue;
|
private final BlockingQueue<AudioTrack> queue;
|
||||||
public String topic;
|
public String topic;
|
||||||
|
|
||||||
public TrackScheduler(AudioPlayer player) {
|
public TrackScheduler(AudioPlayer player) {
|
||||||
@@ -53,6 +53,10 @@ public class TrackScheduler extends AudioEventAdapter {
|
|||||||
return channel;
|
return channel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BlockingQueue<AudioTrack> getQueue() {
|
||||||
|
return queue;
|
||||||
|
}
|
||||||
|
|
||||||
public void resetTopic() {
|
public void resetTopic() {
|
||||||
if (this.channel != null) {
|
if (this.channel != null) {
|
||||||
//this.channel.getManager().setTopic(this.topic).queue();
|
//this.channel.getManager().setTopic(this.topic).queue();
|
||||||
|
|||||||
@@ -7,13 +7,9 @@ package netneutrality.utils;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.SortedSet;
|
|
||||||
import java.util.TreeSet;
|
|
||||||
|
|
||||||
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
|
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
|
||||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
||||||
@@ -23,6 +19,8 @@ import netneutrality.command.AbstractCommand;
|
|||||||
import netneutrality.db.DBController;
|
import netneutrality.db.DBController;
|
||||||
import netneutrality.db.controllers.DBBlacklist;
|
import netneutrality.db.controllers.DBBlacklist;
|
||||||
import netneutrality.db.models.MBlacklist;
|
import netneutrality.db.models.MBlacklist;
|
||||||
|
import netneutrality.music.MusicManager;
|
||||||
|
import org.apache.commons.lang3.time.DurationFormatUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -60,23 +58,35 @@ public class MessageFunction {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized static MessageEmbed buildAddingTrackMessage(AudioTrack track, Member user) {
|
public synchronized static MessageEmbed buildCurrentlyPlayingMessage(AudioTrack track, Member user) {
|
||||||
Duration d = Duration.ofMillis(track.getDuration());
|
|
||||||
|
|
||||||
EmbedBuilder message = new EmbedBuilder();
|
EmbedBuilder message = new EmbedBuilder();
|
||||||
message.setTitle("Adding track to queue..");
|
message.setThumbnail(String.format("https://img.youtube.com/vi/%s/default.jpg", track.getIdentifier()));
|
||||||
|
message.setTitle("Currently playing:");
|
||||||
message.setColor(Color.BLUE);
|
message.setColor(Color.BLUE);
|
||||||
message.addField("Track title: ", track.getInfo().title, false);
|
message.addField("Track title: ", track.getInfo().title, false);
|
||||||
message.addField("Duration: ", d.toMinutesPart() + ":" + d.toSecondsPart(), false);
|
message.addField("Duration: ", DurationFormatUtils.formatDuration(track.getPosition(), "**HH:mm:ss**", true) + " / " + DurationFormatUtils.formatDuration(track.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();
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized static MessageEmbed buildAddingTrackMessage(AudioTrack track, Member user) {
|
||||||
|
EmbedBuilder message = new EmbedBuilder();
|
||||||
|
message.setThumbnail(String.format("https://img.youtube.com/vi/%s/default.jpg", track.getIdentifier()));
|
||||||
|
message.setTitle("Adding track to queue..");
|
||||||
|
message.setColor(Color.BLUE);
|
||||||
|
message.addField("Track title: ", track.getInfo().title, false);
|
||||||
|
message.addField("Duration: ", DurationFormatUtils.formatDuration(track.getDuration(), "**HH:mm:ss**", true), false);
|
||||||
|
message.setFooter("Requested by " + user.getUser().getName(), user.getUser().getAvatarUrl());
|
||||||
|
message.setTimestamp(OffsetDateTime.now());
|
||||||
|
|
||||||
return message.build();
|
return message.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized static MessageEmbed buildAddingPlaylistMessage(AudioPlaylist playlist, Member user) {
|
public synchronized static MessageEmbed buildAddingPlaylistMessage(AudioPlaylist playlist, Member user) {
|
||||||
EmbedBuilder message = new EmbedBuilder();
|
EmbedBuilder message = new EmbedBuilder();
|
||||||
|
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);
|
||||||
message.addField("Playlist: ", playlist.getName(), false);
|
message.addField("Playlist: ", playlist.getName(), false);
|
||||||
@@ -88,6 +98,33 @@ public class MessageFunction {
|
|||||||
return message.build();
|
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);
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
for (String track: tracks) {
|
||||||
|
String text = track;
|
||||||
|
|
||||||
|
if (Objects.equals(track, current.getInfo().title))
|
||||||
|
text += " (Currently playing)";
|
||||||
|
|
||||||
|
message.addField("Track #" + ++index, text, false);
|
||||||
|
|
||||||
|
if (index == 10) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
message.setFooter("Requested by " + user.getUser().getName(), user.getUser().getAvatarUrl());
|
||||||
|
message.setTimestamp(OffsetDateTime.now());
|
||||||
|
|
||||||
|
return message.build();
|
||||||
|
}
|
||||||
|
|
||||||
public static MessageEmbed buildHelpMessage(HashMap<String, AbstractCommand> commands, HashMap<String, AbstractCommand> alias) {
|
public static MessageEmbed buildHelpMessage(HashMap<String, AbstractCommand> commands, HashMap<String, AbstractCommand> alias) {
|
||||||
EmbedBuilder message = new EmbedBuilder();
|
EmbedBuilder message = new EmbedBuilder();
|
||||||
message.setTitle("Commands for Net Neutrality");
|
message.setTitle("Commands for Net Neutrality");
|
||||||
@@ -135,5 +172,4 @@ public class MessageFunction {
|
|||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user