package stream.flarebot.flarebot.commands.music; import net.dv8tion.jda.core.entities.Member; import net.dv8tion.jda.core.entities.Message; import net.dv8tion.jda.core.entities.TextChannel; import net.dv8tion.jda.core.entities.User; import stream.flarebot.flarebot.FlareBotManager; import stream.flarebot.flarebot.commands.Command; import stream.flarebot.flarebot.commands.CommandType; import stream.flarebot.flarebot.objects.GuildWrapper; import stream.flarebot.flarebot.permissions.Permission; import stream.flarebot.flarebot.util.MessageUtils; public class LeaveCommand implements Command { @Override public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) { if (channel.getGuild().getSelfMember().getVoiceState().inVoiceChannel()) { if ((!member.getVoiceState().inVoiceChannel() || !channel.getGuild().getSelfMember().getVoiceState() .getAudioChannel().getId() .equals(member.getVoiceState().getAudioChannel() .getId())) && !getPermissions(channel) .hasPermission(member, Permission.LEAVE_OTHER)) { MessageUtils.sendErrorMessage("You need the permission `" + Permission.LEAVE_OTHER + "` for me to leave a different voice channel!", channel, sender); return; } channel.getGuild().getAudioManager().closeAudioConnection(); if (FlareBotManager.instance().getLastActive().containsKey(guild.getGuildIdLong())) FlareBotManager.instance().getLastActive().remove(guild.getGuildIdLong()); MessageUtils.sendInfoMessage("Bye bye! I've left the channel for now", channel, sender); } } @Override public String getCommand() { return "leave"; } @Override public String getDescription() { return "Tell me to leave the voice channel."; } @Override public String getUsage() { return "`{%}leave` - Makes FlareBot leave its current channel."; } @Override public Permission getPermission() { return Permission.LEAVE_COMMAND; } @Override public String[] getAliases() { return new String[]{"gtfo", "banish", "getout", "quit"}; } @Override public CommandType getType() { return CommandType.MUSIC; } }