diff --git a/pom.xml b/pom.xml index 79ee1d3..920716f 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ net.dv8tion JDA - 4.1.0_90 + 4.1.0_88 org.json diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index d98da1a..074bf70 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -98,7 +98,8 @@ public class Hadder { new SkipCommand(), new EditRulesCommand(), new VolumeCommand(), - new StopCommand()), config, helpCommand); + new StopCommand(), + new BlackListCommand()), config, helpCommand); builder.addEventListeners( new MentionListener(rethink), diff --git a/src/main/java/com/bbn/hadder/Rethink.java b/src/main/java/com/bbn/hadder/Rethink.java index 5e99d76..436298a 100644 --- a/src/main/java/com/bbn/hadder/Rethink.java +++ b/src/main/java/com/bbn/hadder/Rethink.java @@ -133,7 +133,15 @@ public class Rethink { } public void insertUser(String id) { - this.insert("user", r.hashMap("id", id).with("prefix", "h.").with("language", "en")); + this.insert("user", r.hashMap("id", id).with("prefix", "h.").with("language", "en").with("blacklisted", "none")); + } + + public void setBlackListed(String id, String commands) { + this.update("user", id, "blacklisted", commands); + } + + public String getBlackListed(String id) { + return (String) this.get("user", "id", id, "blacklisted"); } public void setNeededstars(String stars, String guild_id) { diff --git a/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java b/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java index d0d058b..b0391b9 100644 --- a/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java +++ b/src/main/java/com/bbn/hadder/commands/music/VolumeCommand.java @@ -16,7 +16,7 @@ public class VolumeCommand implements Command { if (event.getAudioManager().hasPlayer(event.getGuild()) && event.getAudioManager().getPlayer(event.getGuild()).getPlayingTrack() != null) { try { int volume = Integer.parseInt(args[0]); - if (volume < 201 && volume > 0 || event.getConfig().getOwners().contains(event.getAuthor().getIdLong())) { + if (volume < 200 && volume > 0 || event.getConfig().getOwners().contains(event.getAuthor().getId())) { event.getAudioManager().getPlayer(event.getGuild()).setVolume(volume); event.getTextChannel().sendMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO, "commands.music.volume.success.title", "", @@ -46,7 +46,7 @@ public class VolumeCommand implements Command { @Override public String description() { - return "commands.music.volume.help.description"; + return "Change the volume of the music."; } @Override diff --git a/src/main/java/com/bbn/hadder/commands/owner/BlackListCommand.java b/src/main/java/com/bbn/hadder/commands/owner/BlackListCommand.java new file mode 100644 index 0000000..bb9040a --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/owner/BlackListCommand.java @@ -0,0 +1,107 @@ +/* + * @author Hax / Hax6775 / Schlauer_Hax + */ + +package com.bbn.hadder.commands.owner; + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.core.Perm; +import com.bbn.hadder.core.Perms; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.User; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.List; + +@Perms(Perm.BOT_OWNER) +public class BlackListCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent event) { + if (args.length == 0) { + event.getHelpCommand().sendHelp(this, event); + } else { + switch (args[0].toLowerCase()) { + case "add": + if (args.length == 3) { + Member member = event.getMessage().getMentionedMembers().get(0); + String blacklisted = event.getRethink().getBlackListed(member.getId()); + List commands = new ArrayList<>(); + if (!blacklisted.equals("none")) commands.addAll(Arrays.asList(blacklisted.split(","))); + commands.addAll(Arrays.asList(args[1].split(","))); + LinkedHashSet hashSet = new LinkedHashSet<>(commands); + + ArrayList commandsWithoutDuplicates = new ArrayList<>(hashSet); + String newblacklisted = ((commandsWithoutDuplicates.size()!=0) ? String.join(",", commandsWithoutDuplicates) : "none"); + event.getRethink().setBlackListed(member.getId(), newblacklisted); + event.getTextChannel().sendMessage( + event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) + .setTitle("Removed Blacklisted Commands from User") + .setDescription("Blacklisted commands: "+newblacklisted) + .build()).queue(); + } + break; + case "remove": + if (args.length == 3) { + Member member = event.getMessage().getMentionedMembers().get(0); + String blacklisted = event.getRethink().getBlackListed(member.getId()); + List commands = new ArrayList<>(); + if (!blacklisted.equals("none")) commands.addAll(Arrays.asList(blacklisted.split(","))); + commands.removeAll(Arrays.asList(args[1].split(","))); + LinkedHashSet hashSet = new LinkedHashSet<>(commands); + + ArrayList commandsWithoutDuplicates = new ArrayList<>(hashSet); + String newblacklisted = ((commandsWithoutDuplicates.size()!=0) ? String.join(",", commandsWithoutDuplicates) : "none"); + event.getRethink().setBlackListed(member.getId(), newblacklisted); + event.getTextChannel().sendMessage( + event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) + .setTitle("Removed Blacklisted Commands from User") + .setDescription("Blacklisted commands: "+newblacklisted) + .build()).queue(); + } + break; + case "list": + StringBuilder stringBuilder = new StringBuilder(); + for (User user : event.getJDA().getUsers()) { + if (!user.getId().equals(event.getJDA().getSelfUser().getId())) { + String blacklisted = event.getRethink().getBlackListed(user.getId()); + if (!blacklisted.equals("none")) { + stringBuilder.append(user.getAsTag() + " (" + user.getId() + ") - " + blacklisted + "\n"); + } + } + } + event.getTextChannel().sendMessage( + event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO) + .setTitle("Blacklisted Users:") + .setDescription((stringBuilder.length()!=0) ? ("``" + stringBuilder.toString() + "``") : "No blacklisted Users") + .build()).queue(); + break; + } + } + } + + @Override + public String[] labels() { + return new String[]{"blacklist"}; + } + + @Override + public String description() { + return null; + } + + @Override + public String usage() { + return "add|remove|list Commands @Skidder#6775"; + } + + @Override + public String example() { + return null; + } +} diff --git a/src/main/java/com/bbn/hadder/core/CommandHandler.java b/src/main/java/com/bbn/hadder/core/CommandHandler.java index 8734539..0a575df 100644 --- a/src/main/java/com/bbn/hadder/core/CommandHandler.java +++ b/src/main/java/com/bbn/hadder/core/CommandHandler.java @@ -48,7 +48,17 @@ public class CommandHandler { } } - cmd.executed(args, commandEvent); + boolean run = true; + String blacklisted = rethink.getBlackListed(event.getAuthor().getId()); + if (!blacklisted.equals("none")) { + for (String blacklistedlabel : blacklisted.split(",")) { + if (Arrays.asList(cmd.labels()).contains(blacklistedlabel)) { + run = false; + } + } + } + if (run) + cmd.executed(args, commandEvent); return; } } diff --git a/src/main/java/com/bbn/hadder/listener/VoiceLeaveListener.java b/src/main/java/com/bbn/hadder/listener/VoiceLeaveListener.java index 8db4d9f..643a17a 100644 --- a/src/main/java/com/bbn/hadder/listener/VoiceLeaveListener.java +++ b/src/main/java/com/bbn/hadder/listener/VoiceLeaveListener.java @@ -18,7 +18,7 @@ public class VoiceLeaveListener extends ListenerAdapter { @Override public void onGuildVoiceLeave(GuildVoiceLeaveEvent event) { - if (audioManager.hasPlayer(event.getGuild()) && event.getChannelLeft().getMembers().equals(event.getGuild().getSelfMember())) { + if (new AudioManager().hasPlayer(event.getGuild()) && event.getChannelLeft().getMembers().equals(event.getGuild().getSelfMember())) { audioManager.players.remove(event.getGuild().getId()); audioManager.getPlayer(event.getGuild()).destroy(); audioManager.getTrackManager(event.getGuild()).purgeQueue(); diff --git a/src/main/resources/Translations/Translations_en.properties b/src/main/resources/Translations/Translations_en.properties index 7cfb99e..133e2e9 100644 --- a/src/main/resources/Translations/Translations_en.properties +++ b/src/main/resources/Translations/Translations_en.properties @@ -212,7 +212,6 @@ commands.music.volume.success.title = Successfully set commands.music.volume.success.description = I successfully set the new volume to %extra% commands.music.volume.error.int.title = Invalid number commands.music.volume.error.int.description = The volume have to be between 1 and 200 -commands.music.volume.help.description = Change the volume of the music. commands.nsfw.gif.error.title = GIF not showing? Click here commands.nsfw.img.error.title = Image not showing? Click here