aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/audio
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/audio')
-rw-r--r--src/main/java/audio/GuildMusicManager.java7
-rw-r--r--src/main/java/audio/Music.java79
-rw-r--r--src/main/java/audio/TrackScheduler.java23
3 files changed, 53 insertions, 56 deletions
diff --git a/src/main/java/audio/GuildMusicManager.java b/src/main/java/audio/GuildMusicManager.java
index 0757422..5a9adb7 100644
--- a/src/main/java/audio/GuildMusicManager.java
+++ b/src/main/java/audio/GuildMusicManager.java
@@ -1,14 +1,15 @@
package audio;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
+import net.dv8tion.jda.api.JDA;
+
public class GuildMusicManager {
public final AudioPlayer player;
-
public final TrackScheduler scheduler;
- public GuildMusicManager(AudioPlayerManager manager) {
+ public GuildMusicManager(AudioPlayerManager manager, JDA jda) {
player = manager.createPlayer();
- scheduler = new TrackScheduler(player);
+ scheduler = new TrackScheduler(player,jda);
player.addListener(scheduler);
}
diff --git a/src/main/java/audio/Music.java b/src/main/java/audio/Music.java
index 26c7773..afca6f2 100644
--- a/src/main/java/audio/Music.java
+++ b/src/main/java/audio/Music.java
@@ -8,9 +8,13 @@ import com.sedmelluq.discord.lavaplayer.source.AudioSourceManagers;
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
+import commands.CommandManager;
import commands.UIPusher;
import net.dv8tion.jda.api.EmbedBuilder;
+import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.MessageBuilder;
+import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.VoiceChannel;
@@ -24,10 +28,8 @@ import net.dv8tion.jda.api.interactions.components.selections.SelectionMenu;
import net.dv8tion.jda.api.managers.AudioManager;
import org.jetbrains.annotations.NotNull;
import se.michaelthelin.spotify.model_objects.specification.PlaylistTrack;
-import utility.EmbedMaker;
-import utility.SpotifyAPI;
-import utility.URLChecker;
-import utility.YouTubeAPI;
+import utility.*;
+import javax.security.auth.login.LoginException;
import java.awt.*;
import java.io.*;
import java.net.MalformedURLException;
@@ -38,21 +40,39 @@ import java.util.*;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
+
public class Music extends ListenerAdapter {
- ArrayList<String> currentlyLoadedPlaylist = new ArrayList<>();
- String ytapiKey;
+ public static JDA jda;
+ public static JDABuilder jdabuilder;
+ private ArrayList<String> currentlyLoadedPlaylist = new ArrayList<>();
+ private String ytapiKey;
static String append = "$";
private final URLChecker urlCheck = new URLChecker();
- UIPusher uiPusher = new UIPusher();
+ private StatusHandler statusHandler;
+ private UIPusher uiPusher = new UIPusher();
private final AudioPlayerManager playerManager;
private final Map<Long, GuildMusicManager> musicManagers;
private final SpotifyAPI spotifyAPI = new SpotifyAPI();
private final EmbedMaker embedMaker = new EmbedMaker();
- public Music(String append, String ytapiKey) {
+
+ public Music(String append, String ytapiKey, String discordToken) {
this.musicManagers = new HashMap<>();
this.ytapiKey = ytapiKey;
Music.append = append;
this.playerManager = new DefaultAudioPlayerManager();
+ jdabuilder = JDABuilder.createDefault(discordToken);
+ try {
+ jdabuilder.addEventListeners(this);
+ jdabuilder.addEventListeners(new CommandManager(this));
+ jda = jdabuilder.build();
+ statusHandler = new StatusHandler(jda);
+ statusHandler.setSlashCommands();
+ System.out.println("Bot Started");
+ } catch (LoginException e) {
+ throw new RuntimeException(e);
+ }
+
+ //Registering audio sources
AudioSourceManagers.registerRemoteSources(playerManager);
AudioSourceManagers.registerLocalSource(playerManager);
}
@@ -61,7 +81,7 @@ public class Music extends ListenerAdapter {
GuildMusicManager musicManager = musicManagers.get(guildId);
if (musicManager == null) {
- musicManager = new GuildMusicManager(playerManager);
+ musicManager = new GuildMusicManager(playerManager,jda);
musicManagers.put(guildId, musicManager);
}
guild.getAudioManager().setSendingHandler(musicManager.getSendHandler());
@@ -126,15 +146,6 @@ public class Music extends ListenerAdapter {
if((append+"holoadd").equals(command[0])){
event.getChannel().sendMessage("The url has been successfully added to the database").queue();
}
- /* else if("!dev".equals(command[0])){
- try {
- YouTubeAPI youTubeAPI = new YouTubeAPI(ytapiKey);
- youTubeAPI.getAllURLPlaylist("PLQmVFdwvZgfXlb2RDXWV1NaPXgYPu786G");
- }
- catch (Exception e){
-
- }
- }*/
super.onGuildMessageReceived(event);
}
@@ -205,6 +216,7 @@ public class Music extends ListenerAdapter {
String userQuery = event.getOption("term").getAsString();
if (urlCheck.isURL(userQuery) && !urlCheck.getURLType(userQuery).equals("spotify")&&!urlCheck.getURLType(userQuery).equals("spotify-playlist")) { //The term is a URL
event.reply("Found Video: " + userQuery).queue();
+
loadAndPlay((TextChannel) event.getChannel(), userQuery, false);
}
else { //Run checks if its not a directly playable URL
@@ -415,31 +427,6 @@ public class Music extends ListenerAdapter {
}
}
- else if(event.getValues().get(0).contains("inspect-queue")) { //THIS FEAUTURE IS NOT FINISHED
- //TODO: FINISH THE INSPECT QUEUE FEATURE
- Queue<AudioTrack> queue = getGuildAudioPlayer(event.getGuild()).scheduler.queue;
- BlockingQueue<AudioTrack> newQueue = new LinkedBlockingQueue<>();
- String trackName = event.getValues().get(0).replaceAll("inspect-queue ", "");
- synchronized (queue) {
- if (queue.isEmpty())
- {
- event.reply("The queue is currently empty!").queue();
-
- }
- else {
- for (AudioTrack track : queue) {
- if (!track.getInfo().title.equals(trackName)) {
- newQueue.add(track);
- }
- else{
-
- }
- }
- getGuildAudioPlayer(event.getGuild()).scheduler.queue = newQueue;
- }
-
- }
- }
}
@Override
public void onButtonClick(ButtonClickEvent event){
@@ -518,6 +505,7 @@ public class Music extends ListenerAdapter {
}
play(channel.getGuild(), musicManager, track);
+
}
@Override
@@ -530,7 +518,6 @@ public class Music extends ListenerAdapter {
channel.sendMessage("Adding to queue " + firstTrack.getInfo().title + " (first track of playlist " + playlist.getName() + ")").queue();
}
-
play(channel.getGuild(), musicManager, firstTrack);
}
@@ -555,14 +542,11 @@ public class Music extends ListenerAdapter {
private void play(Guild guild, GuildMusicManager musicManager, AudioTrack track) {
connectToFirstVoiceChannel(guild.getAudioManager());
musicManager.scheduler.queue(track);
- BlockingQueue<AudioTrack> s = musicManager.scheduler.queue;
-
}
public void skipTrack(SlashCommandEvent event) {
GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild());
musicManager.scheduler.nextTrack();
-
event.reply("Skipped to next track.").queue();
}
@@ -588,5 +572,4 @@ public class Music extends ListenerAdapter {
-
}
diff --git a/src/main/java/audio/TrackScheduler.java b/src/main/java/audio/TrackScheduler.java
index 8377e7a..02329c8 100644
--- a/src/main/java/audio/TrackScheduler.java
+++ b/src/main/java/audio/TrackScheduler.java
@@ -4,6 +4,8 @@ import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
import com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter;
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
import com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason;
+import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.entities.Activity;
import java.util.Collections;
import java.util.List;
@@ -16,12 +18,13 @@ import java.util.concurrent.LinkedBlockingQueue;
public class TrackScheduler extends AudioEventAdapter {
public final AudioPlayer player;
public BlockingQueue<AudioTrack> queue;
-
+ public JDA jda;
/**
* @param player The audio player this scheduler uses
*/
- public TrackScheduler(AudioPlayer player) {
+ public TrackScheduler(AudioPlayer player, JDA jda) {
this.player = player;
+ this.jda = jda;
this.queue = new LinkedBlockingQueue<>();
}
@@ -31,24 +34,34 @@ public class TrackScheduler extends AudioEventAdapter {
* @param track The track to play or add to queue.
*/
public void queue(AudioTrack track) {
- if (!player.startTrack(track, true)) {
+ //!player.startTrack(track, true)
+ if (player.getPlayingTrack()!= null) {
queue.offer(track);
+ jda.getPresence().setActivity(Activity.playing(player.getPlayingTrack().getInfo().title));
+ }
+ else{
+ player.startTrack(track, true);
+ jda.getPresence().setActivity(Activity.playing(player.getPlayingTrack().getInfo().title));
}
+
}
/**
* Start the next track, stopping the current one if it is playing.
*/
public void nextTrack() {
-
player.startTrack(queue.poll(), false);
+ jda.getPresence().setActivity(Activity.playing(player.getPlayingTrack().getInfo().title));
- }
+ }
+ //TODO: FIGURE OUT HOW TO CHANGE THE STATUS AT THIS PART
@Override
public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
// Only start the next track if the end reason is suitable for it (FINISHED or LOAD_FAILED)
+ jda.getPresence().setActivity(null);
if (endReason.mayStartNext) {
+ jda.getPresence().setActivity(Activity.playing(track.getInfo().title));
nextTrack();
}
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage