From a53c04905969589f7637f42b91e43738d485a55f Mon Sep 17 00:00:00 2001 From: GregTCLTK Date: Sun, 24 Nov 2019 18:27:59 +0100 Subject: [PATCH] Leave and GuildLeave --- src/main/java/com/bbn/hadder/Hadder.java | 5 +- .../hadder/commands/music/JoinCommand.java | 14 ++++-- .../hadder/commands/music/LeaveCommand.java | 46 ++++++++++++++++++ .../commands/owner/GuildLeaveCommand.java | 48 +++++++++++++++++++ 4 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/bbn/hadder/commands/music/LeaveCommand.java create mode 100644 src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java diff --git a/src/main/java/com/bbn/hadder/Hadder.java b/src/main/java/com/bbn/hadder/Hadder.java index 36346e4..dc6640b 100644 --- a/src/main/java/com/bbn/hadder/Hadder.java +++ b/src/main/java/com/bbn/hadder/Hadder.java @@ -11,7 +11,6 @@ import com.bbn.hadder.commands.music.*; import com.bbn.hadder.core.*; import com.bbn.hadder.listener.*; import net.dv8tion.jda.api.entities.Activity; -import net.dv8tion.jda.api.managers.AudioManager; import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder; import net.dv8tion.jda.api.sharding.ShardManager; @@ -21,7 +20,6 @@ import java.util.List; public class Hadder { public static ShardManager shardManager; - public static AudioManager audioManager; public static void main(String[] args) { startBot(); @@ -76,6 +74,8 @@ public class Hadder { new AvatarCommand(), new EvalCommand(), new JoinCommand(), + new LeaveCommand(), + new GuildLeaveCommand(), new LinkCommand()), config, helpCommand); builder.addEventListeners( @@ -87,7 +87,6 @@ public class Hadder { new LinkListener(rethink), new RulesListener(rethink)); - try { shardManager = builder.build(); } catch (LoginException e) { diff --git a/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java b/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java index 249ec60..a380c7a 100644 --- a/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java +++ b/src/main/java/com/bbn/hadder/commands/music/JoinCommand.java @@ -6,9 +6,9 @@ package com.bbn.hadder.commands.music; import com.bbn.hadder.commands.Command; import com.bbn.hadder.commands.CommandEvent; -import com.bbn.hadder.utils.AudioPlayerSendHandler; import com.bbn.hadder.utils.MessageEditor; import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.VoiceChannel; import net.dv8tion.jda.api.managers.AudioManager; @@ -21,8 +21,16 @@ public class JoinCommand implements Command { AudioManager audioManager = event.getGuild().getAudioManager(); if(!audioManager.isAttemptingToConnect()) { VoiceChannel vc = event.getMember().getVoiceState().getChannel(); - audioManager.setSendingHandler(new AudioPlayerSendHandler()); - audioManager.openAudioConnection(vc); + if (vc.getMemberPermissionOverrides().contains(Permission.VOICE_CONNECT)) { + event.getGuild().getAudioManager().openAudioConnection(vc); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Successfully connected")) + .setDescription("I successfully connected to " + vc.getName() + ".") + .build()).queue(); + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_SELF_PERMISSION, builder).build()).queue(); + } } else { EmbedBuilder builder = new EmbedBuilder(); event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder) diff --git a/src/main/java/com/bbn/hadder/commands/music/LeaveCommand.java b/src/main/java/com/bbn/hadder/commands/music/LeaveCommand.java new file mode 100644 index 0000000..844344c --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/music/LeaveCommand.java @@ -0,0 +1,46 @@ +package com.bbn.hadder.commands.music; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; + + +public class LeaveCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent event) { + if (event.getGuild().getSelfMember().getVoiceState().inVoiceChannel()) { + event.getGuild().getAudioManager().closeAudioConnection(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Successfully disconnected") + .setDescription("I successfully disconnected from the Voice Channel")) + .build()).queue(); + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.WARNING, builder) + .setTitle("Not connected") + .setDescription("I'm currently in no Voice Channel on this Guild") + .build()).queue(); + } + } + + @Override + public String[] labels() { + return new String[]{"leave"}; + } + + @Override + public String description() { + return "Leaves a voice channel"; + } + + @Override + public String usage() { + return ""; + } +} diff --git a/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java b/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java new file mode 100644 index 0000000..5d7d652 --- /dev/null +++ b/src/main/java/com/bbn/hadder/commands/owner/GuildLeaveCommand.java @@ -0,0 +1,48 @@ +package com.bbn.hadder.commands.owner; + +/* + * @author Skidder / GregTCLTK + */ + +import com.bbn.hadder.commands.Command; +import com.bbn.hadder.commands.CommandEvent; +import com.bbn.hadder.utils.MessageEditor; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.Guild; + +public class GuildLeaveCommand implements Command { + + @Override + public void executed(String[] args, CommandEvent event) { + if (event.getConfig().getOwners().toString().contains(event.getAuthor().getId())) { + if (args.length > 0) { + Guild guild = event.getJDA().getGuildById(args[0]); + guild.leave().queue(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.INFO, new EmbedBuilder() + .setTitle("Successfully left") + .setDescription("I successfully left " + guild.getName())) + .build()).queue(); + } else { + event.getHelpCommand().sendHelp(this, event.getRethink(), event.getAuthor(), event.getTextChannel()); + } + } else { + EmbedBuilder builder = new EmbedBuilder(); + event.getTextChannel().sendMessage(new MessageEditor().setDefaultSettings(MessageEditor.MessageType.NO_PERMISSION, builder).build()).queue(); + } + } + + @Override + public String[] labels() { + return new String[]{"guildleave"}; + } + + @Override + public String description() { + return "Quit from a guild"; + } + + @Override + public String usage() { + return ""; + } +}