Added join and leave command

This commit is contained in:
Anthony committed 2018-02-22 13:30:11 -05:00
1 parent 18befc79f8
commit 84c8748731
3 files changed
+164 -1

No files matched your search

@@ -0,0 +1,68 @@
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.core.entities.Member;
import net.dv8tion.jda.core.entities.VoiceChannel;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import netneutrality.command.AbstractCommand;
import netneutrality.command.Visibility;
import netneutrality.music.MusicManager;
public class JoinCommand extends AbstractCommand {
@Override
public boolean needAdmin() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public String getCommand() {
return "join";
}
@Override
public String[] getAlias() {
return new String[0];
}
@Override
public String getUsage() {
return null;
}
@Override
public Visibility getVisibility() {
return Visibility.CHANNEL;
}
@Override
public String execute(MessageReceivedEvent event, String args) {
Member member = event.getMember();
MusicManager player = MusicManager.get(event.getGuild());
if (member.getVoiceState().inVoiceChannel()) {
VoiceChannel vChannel = member.getVoiceState().getChannel();
if (!player.isConnected()) {
if (!player.isConnectedTo(vChannel)) {
player.connect(vChannel);
} else
event.getTextChannel().sendMessage("Already in a voice channel").queue();
} else
event.getTextChannel().sendMessage("Already in a voice channel").queue();
} else
event.getTextChannel().sendMessage("You are not in a voice channel").queue();
return null;
}
}
@@ -0,0 +1,59 @@
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.core.entities.Member;
import net.dv8tion.jda.core.entities.VoiceChannel;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import netneutrality.command.AbstractCommand;
import netneutrality.command.Visibility;
import netneutrality.music.MusicManager;
public class LeaveCommand extends AbstractCommand {
@Override
public boolean needAdmin() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
@Override
public String getCommand() {
return "leave";
}
@Override
public String[] getAlias() {
return new String[0];
}
@Override
public String getUsage() {
return null;
}
@Override
public Visibility getVisibility() {
return Visibility.CHANNEL;
}
@Override
public String execute(MessageReceivedEvent event, String args) {
Member member = event.getMember();
MusicManager player = MusicManager.get(event.getGuild());
VoiceChannel vChannel = member.getVoiceState().getChannel();
if (player.isConnectedTo(vChannel)) {
player.leave();
}
return null;
}
}
@@ -11,7 +11,8 @@ import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
import net.dv8tion.jda.core.entities.Guild;
import net.dv8tion.jda.core.managers.AudioManager;
import net.dv8tion.jda.core.entities.VoiceChannel;
import netneutrality.MusicBot;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -23,6 +24,7 @@ public class MusicManager {
private TrackScheduler scheduler;
private static Map<String, MusicManager> managers = new ConcurrentHashMap<>();
private long guildId;
private boolean isPlaying = false;
private MusicManager(Guild guild) {
@@ -43,4 +45,38 @@ public class MusicManager {
return new MusicManager(guild);
}
}
public boolean isConnectedTo(VoiceChannel vChannel) {
return vChannel != null && vChannel.equals(MusicBot.getJDA().getGuildById(guildId).getAudioManager().getConnectedChannel());
}
public void connect(VoiceChannel vChannel) {
if (vChannel != null && !isConnectedTo(vChannel)) {
Guild guild = MusicBot.getJDA().getGuildById(guildId);
guild.getAudioManager().openAudioConnection(vChannel);
} else
MusicBot.LOGGER.debug("Error connecting!");
}
public boolean isConnected() {
Guild guild = MusicBot.getJDA().getGuildById(guildId);
return guild != null && guild.getAudioManager().getConnectedChannel() != null;
}
public boolean leave() {
if (isConnected()) {
stopMusic();
}
Guild guild = MusicBot.getJDA().getGuildById(guildId);
if (guild != null) {
guild.getAudioManager().closeAudioConnection();
}
return true;
}
public synchronized void stopMusic() {
player.destroy();
}
}