diff --git a/src/main/java/netneutrality/StatusThread.java b/src/main/java/netneutrality/StatusThread.java index e2a9487..1c8af3f 100644 --- a/src/main/java/netneutrality/StatusThread.java +++ b/src/main/java/netneutrality/StatusThread.java @@ -24,7 +24,6 @@ public class StatusThread implements Runnable { } } catch (InterruptedException e) { - // TODO Auto-generated catch block e.printStackTrace(); } diff --git a/src/main/java/netneutrality/command/music/DeleteQueueCommand.java b/src/main/java/netneutrality/command/music/DeleteQueueCommand.java index b7a96dd..ad99c3f 100644 --- a/src/main/java/netneutrality/command/music/DeleteQueueCommand.java +++ b/src/main/java/netneutrality/command/music/DeleteQueueCommand.java @@ -54,7 +54,14 @@ public class DeleteQueueCommand extends AbstractCommand { if (player.isConnected()) { if (player.isConnectedTo(vChannel)) { - player.getScheduler().queue.clear(); + int queueSize = player.getScheduler().queue.size(); + if (queueSize > 0) { + player.getScheduler().queue.clear(); + event.getTextChannel().sendMessage("Removed " + queueSize + (queueSize > 1 ? " tracks" : "track") + " from the queue").queue(); + } else { + event.getTextChannel().sendMessage("Queue is empty!").queue(); + } + } else event.getTextChannel().sendMessage("Not in your voice channel").queue(); } else { diff --git a/src/main/java/netneutrality/command/music/PlayCommand.java b/src/main/java/netneutrality/command/music/PlayCommand.java index fc9beb9..78ae10f 100644 --- a/src/main/java/netneutrality/command/music/PlayCommand.java +++ b/src/main/java/netneutrality/command/music/PlayCommand.java @@ -54,11 +54,13 @@ public class PlayCommand extends AbstractCommand { if (player.isConnected()) { if (player.isConnectedTo(vChannel)) { + event.getMessage().delete().queue(); player.play(args.split(" ")[0], event.getTextChannel(), false); } else event.getTextChannel().sendMessage("Not in your voice channel").queue(); } else { player.connect(vChannel); + event.getMessage().delete().queue(); player.play(args.split(" ")[0], event.getTextChannel(), false); } } else diff --git a/src/main/java/netneutrality/db/AbstractController.java b/src/main/java/netneutrality/db/AbstractController.java index 1b916eb..9f8626b 100644 --- a/src/main/java/netneutrality/db/AbstractController.java +++ b/src/main/java/netneutrality/db/AbstractController.java @@ -21,14 +21,12 @@ public abstract class AbstractController { } public AbstractController start() { - MusicBot.LOGGER.debug("Starting task.. ["+ getControllerName() + "}"); DBController.isDoingSomething = true; isDoingSomething = true; return this; } protected AbstractController end() { - MusicBot.LOGGER.debug("Ended task! ["+ getControllerName() + "}"); DBController.isDoingSomething = false; isDoingSomething = false; return this; diff --git a/src/main/java/netneutrality/db/controllers/DBBlacklist.java b/src/main/java/netneutrality/db/controllers/DBBlacklist.java index 3198d32..5b0390a 100644 --- a/src/main/java/netneutrality/db/controllers/DBBlacklist.java +++ b/src/main/java/netneutrality/db/controllers/DBBlacklist.java @@ -158,7 +158,6 @@ public class DBBlacklist extends AbstractController { @Override public String getControllerName() { - // TODO Auto-generated method stub return "blacklist"; } } diff --git a/src/main/java/netneutrality/db/controllers/DBSettings.java b/src/main/java/netneutrality/db/controllers/DBSettings.java index 1d4e56c..695a7bf 100644 --- a/src/main/java/netneutrality/db/controllers/DBSettings.java +++ b/src/main/java/netneutrality/db/controllers/DBSettings.java @@ -7,10 +7,6 @@ import netneutrality.db.AbstractController; public class DBSettings extends AbstractController { - public DBSettings() { - // TODO Auto-generated constructor stub - } - public String getLoggingChannel(String serverId) { if (serverId.isEmpty()) { end(); @@ -82,7 +78,6 @@ public class DBSettings extends AbstractController { @Override public String getControllerName() { - // TODO Auto-generated method stub return "settings"; } diff --git a/src/main/java/netneutrality/handler/CommandHandler.java b/src/main/java/netneutrality/handler/CommandHandler.java index b7291d8..4bf0e02 100644 --- a/src/main/java/netneutrality/handler/CommandHandler.java +++ b/src/main/java/netneutrality/handler/CommandHandler.java @@ -31,7 +31,7 @@ public class CommandHandler extends ListenerAdapter { if (event.getAuthor().isBot()) return; if (event.isWebhookMessage()) return; - if (MessageRateLimit.check(event)) return; + if (MessageRateLimit.check(event.getMember(), event.getMessage(), event.getChannel())) return; // event.getChannel().sendMessage("Message id : " + event.getMessage().getId()).queue(); diff --git a/src/main/java/netneutrality/handler/MessageRateLimit.java b/src/main/java/netneutrality/handler/MessageRateLimit.java index d7d9855..7f483f4 100644 --- a/src/main/java/netneutrality/handler/MessageRateLimit.java +++ b/src/main/java/netneutrality/handler/MessageRateLimit.java @@ -3,6 +3,8 @@ package netneutrality.handler; import java.time.OffsetDateTime; import net.dv8tion.jda.core.entities.Member; +import net.dv8tion.jda.core.entities.Message; +import net.dv8tion.jda.core.entities.MessageChannel; import net.dv8tion.jda.core.entities.PrivateChannel; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; @@ -12,29 +14,28 @@ public class MessageRateLimit { private static OffsetDateTime timestamp; private static int cooldown = 500000000; // 1 seconds = 1000000000 nanoseconds - public synchronized static boolean check(MessageReceivedEvent event) { + public synchronized static boolean check(Member member, Message message, MessageChannel channel) { - if (event.getChannel() instanceof PrivateChannel) + if (channel instanceof PrivateChannel) return false; if (lastSender == null || timestamp == null) { - lastSender = event.getMember(); - timestamp = event.getMessage().getCreationTime(); + lastSender = member; + timestamp = message.getCreationTime(); return false; } - if (event.getMember().getUser().getId().equals(lastSender.getUser().getId())) { - if (event.getMessage().getCreationTime().minusNanos(cooldown).isBefore(timestamp)) { - lastSender = event.getMember(); - timestamp = event.getMessage().getCreationTime(); - event.getMessage().delete().queue(); - System.err.print("Rate limited\n>"); + if (member.getUser().getId().equals(lastSender.getUser().getId())) { + if (message.getCreationTime().minusNanos(cooldown).isBefore(timestamp)) { + lastSender = member; + timestamp = message.getCreationTime(); + message.delete().queue(); return true; } } - lastSender = event.getMember(); - timestamp = event.getMessage().getCreationTime(); + lastSender = member; + timestamp = message.getCreationTime(); return false; diff --git a/src/main/java/netneutrality/handler/NewCommandListener.java b/src/main/java/netneutrality/handler/NewCommandListener.java index 0821e30..0539685 100644 --- a/src/main/java/netneutrality/handler/NewCommandListener.java +++ b/src/main/java/netneutrality/handler/NewCommandListener.java @@ -39,7 +39,7 @@ public class NewCommandListener extends ListenerAdapter { if (event.getAuthor().isBot()) return; if (event.isWebhookMessage()) return; - if (MessageRateLimit.check(event)) return; + if (MessageRateLimit.check(event.getMember(), event.getMessage(), event.getChannel())) return; if (event.isFromType(ChannelType.TEXT)) { diff --git a/src/main/java/netneutrality/music/MusicManager.java b/src/main/java/netneutrality/music/MusicManager.java index 3760911..f7427ab 100644 --- a/src/main/java/netneutrality/music/MusicManager.java +++ b/src/main/java/netneutrality/music/MusicManager.java @@ -19,7 +19,8 @@ import net.dv8tion.jda.core.entities.TextChannel; import net.dv8tion.jda.core.entities.VoiceChannel; import netneutrality.MusicBot; import netneutrality.handler.LogHandler; -import netneutrality.utils.YoutubeClass; +import netneutrality.utils.MessageFunction; + import java.util.LinkedList; import java.util.List; @@ -75,6 +76,10 @@ public class MusicManager { return guild != null && guild.getAudioManager().getConnectedChannel() != null; } + public AudioTrack getCurrentlyPlaying() { + return player.getPlayingTrack(); + } + public boolean leave() { if (isConnected()) { stopMusic(); @@ -105,12 +110,13 @@ public class MusicManager { String youtubeCode = SourceFinder.getIdentifier(url); scheduler.setTextChannel(channel); + if (youtubeCode != null) { playerManager.loadItem(youtubeCode, new AudioLoadResultHandler() { @Override public void trackLoaded(AudioTrack audioTrack) { if (!silent) - channel.sendMessage("Adding track to queue : " + audioTrack.getInfo().title).queue(); + channel.sendMessage(MessageFunction.buildAddingTrackMessage(audioTrack)).queue(); scheduler.queue(audioTrack); diff --git a/src/main/java/netneutrality/music/SourceFinder.java b/src/main/java/netneutrality/music/SourceFinder.java index cdc59b1..19cf393 100644 --- a/src/main/java/netneutrality/music/SourceFinder.java +++ b/src/main/java/netneutrality/music/SourceFinder.java @@ -1,7 +1,5 @@ package netneutrality.music; -import netneutrality.utils.YoutubeClass; - import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/src/main/java/netneutrality/utils/MessageFunction.java b/src/main/java/netneutrality/utils/MessageFunction.java index 587cfcf..46f96c5 100644 --- a/src/main/java/netneutrality/utils/MessageFunction.java +++ b/src/main/java/netneutrality/utils/MessageFunction.java @@ -6,11 +6,15 @@ package netneutrality.utils; * This file is closed-source. It should not be distributed or copied in any way or form */ +import java.awt.*; import java.util.List; +import com.sedmelluq.discord.lavaplayer.track.AudioTrack; +import net.dv8tion.jda.core.EmbedBuilder; import net.dv8tion.jda.core.entities.ChannelType; import net.dv8tion.jda.core.entities.Member; import net.dv8tion.jda.core.entities.Message; +import net.dv8tion.jda.core.entities.MessageEmbed; public class MessageFunction { @@ -37,5 +41,14 @@ public class MessageFunction { return false; } + + public static MessageEmbed buildAddingTrackMessage(AudioTrack track) { + EmbedBuilder message = new EmbedBuilder(); + message.setTitle("Adding track to queue.."); + message.setColor(Color.BLUE); + message.addField("Track title :", track.getInfo().title, false); + + return message.build(); + } } diff --git a/src/main/java/netneutrality/utils/UserFunction.java b/src/main/java/netneutrality/utils/UserFunction.java index d5a8464..5dd7ea6 100644 --- a/src/main/java/netneutrality/utils/UserFunction.java +++ b/src/main/java/netneutrality/utils/UserFunction.java @@ -7,6 +7,12 @@ import net.dv8tion.jda.core.entities.Role; public class UserFunction { public static boolean isAdmin(Member user) { + + // This check will only be present during the development of the bot + if (user.getUser().getId().equals(Settings.getCreator().getId())) { + return true; + } + boolean isAdmin = false; for(Role role : user.getRoles()) { if (role.getPermissions().contains(Permission.MANAGE_SERVER) || role.getPermissions().contains(Permission.ADMINISTRATOR)) @@ -15,6 +21,5 @@ public class UserFunction { return isAdmin; } - - + }