Added command and updated music player
Added enum with available source to play from
This commit is contained in:
1 parent
ae5e4176bf
commit
0122bacdbb
3 files changed
+138
-5
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 DeleteQueueCommand extends AbstractCommand {
|
||||||
|
@Override
|
||||||
|
public boolean needAdmin() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCommand() {
|
||||||
|
return "deletequeue";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getAlias() {
|
||||||
|
return new String[]{"delq"};
|
||||||
|
}
|
||||||
|
|
||||||
|
@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.getScheduler().queue.clear();
|
||||||
|
} else
|
||||||
|
event.getTextChannel().sendMessage("Not in your voice channel").queue();
|
||||||
|
} else {
|
||||||
|
event.getTextChannel().sendMessage("Not in a voice channel").queue();
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
event.getTextChannel().sendMessage("You are not in a voice channel").queue();
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,15 +21,17 @@ import netneutrality.MusicBot;
|
|||||||
import netneutrality.handler.LogHandler;
|
import netneutrality.handler.LogHandler;
|
||||||
import netneutrality.utils.YoutubeClass;
|
import netneutrality.utils.YoutubeClass;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class MusicManager {
|
public class MusicManager {
|
||||||
|
|
||||||
private AudioPlayerManager playerManager = new DefaultAudioPlayerManager();
|
private final static AudioPlayerManager playerManager = new DefaultAudioPlayerManager();
|
||||||
private AudioPlayer player;
|
private AudioPlayer player;
|
||||||
private TrackScheduler scheduler;
|
private TrackScheduler scheduler;
|
||||||
private static Map<String, MusicManager> managers = new ConcurrentHashMap<>();
|
private final static Map<String, MusicManager> managers = new ConcurrentHashMap<>();
|
||||||
private long guildId;
|
private long guildId;
|
||||||
private boolean isPlaying = false;
|
private boolean isPlaying = false;
|
||||||
|
|
||||||
@@ -87,7 +89,9 @@ public class MusicManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void stopMusic() {
|
public synchronized void stopMusic() {
|
||||||
|
if (scheduler.getTextChannel() != null)
|
||||||
scheduler.getTextChannel().getManager().setTopic("").queue();
|
scheduler.getTextChannel().getManager().setTopic("").queue();
|
||||||
|
|
||||||
player.destroy();
|
player.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,10 +103,9 @@ public class MusicManager {
|
|||||||
|
|
||||||
public synchronized void play(String url, TextChannel channel, boolean silent ) {
|
public synchronized void play(String url, TextChannel channel, boolean silent ) {
|
||||||
|
|
||||||
String youtubeCode = YoutubeClass.getCodeFromUrl(url);
|
String youtubeCode = SourceFinder.getIdentifier(url);
|
||||||
System.out.println(youtubeCode);
|
|
||||||
scheduler.setTextChannel(channel);
|
scheduler.setTextChannel(channel);
|
||||||
if (!youtubeCode.isEmpty()) {
|
if (youtubeCode != null) {
|
||||||
playerManager.loadItem(youtubeCode, new AudioLoadResultHandler() {
|
playerManager.loadItem(youtubeCode, new AudioLoadResultHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void trackLoaded(AudioTrack audioTrack) {
|
public void trackLoaded(AudioTrack audioTrack) {
|
||||||
@@ -145,4 +148,14 @@ public class MusicManager {
|
|||||||
public void setVolume(int volume) {
|
public void setVolume(int volume) {
|
||||||
player.setVolume(volume);
|
player.setVolume(volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TrackScheduler getScheduler() {
|
||||||
|
return scheduler;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getAllQueuedTrack() {
|
||||||
|
List<String> queuedTracks = new LinkedList<>();
|
||||||
|
scheduler.queue.forEach((a) -> queuedTracks.add(a.getInfo().title));
|
||||||
|
return queuedTracks;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package netneutrality.music;
|
||||||
|
|
||||||
|
import netneutrality.utils.YoutubeClass;
|
||||||
|
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) anthorob
|
||||||
|
*
|
||||||
|
* This file is closed-source. It should not be distributed or copied in any way or form
|
||||||
|
*/
|
||||||
|
enum SourceEnum {
|
||||||
|
Youtube,
|
||||||
|
Soundcloud,
|
||||||
|
Bandcamp,
|
||||||
|
Vimeo,
|
||||||
|
Nothing
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SourceFinder {
|
||||||
|
private static Pattern youtubePattern = Pattern.compile("^(?:https?://)?(?:(?:www\\.)?)?(?:youtube\\.com|youtu\\.be)/.*?(?:embed|e|v|watch.*?v=)?/?([-_a-z0-9]{10,})?(?:&?index=\\d+)?(?>(?:playlist\\?|&)?list=([^#\\\\&\\?]{12,}))?", Pattern.CASE_INSENSITIVE);
|
||||||
|
private static Matcher youtubeMatcher;
|
||||||
|
private static Matcher soudcloudMatcher;
|
||||||
|
private static Matcher BandcampMatcher;
|
||||||
|
private static Matcher vimeoMatcher;
|
||||||
|
|
||||||
|
public static SourceEnum getSource(String url) {
|
||||||
|
youtubeMatcher = youtubePattern.matcher(url);
|
||||||
|
|
||||||
|
if (youtubeMatcher.find())
|
||||||
|
return SourceEnum.Youtube;
|
||||||
|
|
||||||
|
return SourceEnum.Nothing;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getIdentifier(String url) {
|
||||||
|
String identifier = "";
|
||||||
|
|
||||||
|
switch (getSource(url)) {
|
||||||
|
|
||||||
|
case Youtube:
|
||||||
|
return youtubeMatcher.group(1);
|
||||||
|
case Nothing:
|
||||||
|
identifier = null;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return identifier;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user