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
+139
-6
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.utils.YoutubeClass;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class MusicManager {
|
||||
|
||||
private AudioPlayerManager playerManager = new DefaultAudioPlayerManager();
|
||||
private final static AudioPlayerManager playerManager = new DefaultAudioPlayerManager();
|
||||
private AudioPlayer player;
|
||||
private TrackScheduler scheduler;
|
||||
private static Map<String, MusicManager> managers = new ConcurrentHashMap<>();
|
||||
private final static Map<String, MusicManager> managers = new ConcurrentHashMap<>();
|
||||
private long guildId;
|
||||
private boolean isPlaying = false;
|
||||
|
||||
@@ -87,7 +89,9 @@ public class MusicManager {
|
||||
}
|
||||
|
||||
public synchronized void stopMusic() {
|
||||
scheduler.getTextChannel().getManager().setTopic("").queue();
|
||||
if (scheduler.getTextChannel() != null)
|
||||
scheduler.getTextChannel().getManager().setTopic("").queue();
|
||||
|
||||
player.destroy();
|
||||
}
|
||||
|
||||
@@ -99,10 +103,9 @@ public class MusicManager {
|
||||
|
||||
public synchronized void play(String url, TextChannel channel, boolean silent ) {
|
||||
|
||||
String youtubeCode = YoutubeClass.getCodeFromUrl(url);
|
||||
System.out.println(youtubeCode);
|
||||
String youtubeCode = SourceFinder.getIdentifier(url);
|
||||
scheduler.setTextChannel(channel);
|
||||
if (!youtubeCode.isEmpty()) {
|
||||
if (youtubeCode != null) {
|
||||
playerManager.loadItem(youtubeCode, new AudioLoadResultHandler() {
|
||||
@Override
|
||||
public void trackLoaded(AudioTrack audioTrack) {
|
||||
@@ -145,4 +148,14 @@ public class MusicManager {
|
||||
public void setVolume(int 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