Added join and leave command
This commit is contained in:
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.player.DefaultAudioPlayerManager;
|
||||||
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
|
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
|
||||||
import net.dv8tion.jda.core.entities.Guild;
|
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.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
@@ -23,6 +24,7 @@ public class MusicManager {
|
|||||||
private TrackScheduler scheduler;
|
private TrackScheduler scheduler;
|
||||||
private static Map<String, MusicManager> managers = new ConcurrentHashMap<>();
|
private static Map<String, MusicManager> managers = new ConcurrentHashMap<>();
|
||||||
private long guildId;
|
private long guildId;
|
||||||
|
private boolean isPlaying = false;
|
||||||
|
|
||||||
private MusicManager(Guild guild) {
|
private MusicManager(Guild guild) {
|
||||||
|
|
||||||
@@ -43,4 +45,38 @@ public class MusicManager {
|
|||||||
return new MusicManager(guild);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user