Greg dev #269
1 changed files with 90 additions and 54 deletions
|
|
@ -10,7 +10,9 @@ 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 com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
import java.util.AbstractMap;
|
||||
|
|
@ -28,62 +30,9 @@ public class AudioManager {
|
|||
AudioSourceManagers.registerRemoteSources(myManager);
|
||||
}
|
||||
|
||||
public final Map<String, Map.Entry<AudioPlayer, TrackManager>> players = new HashMap<>();
|
||||
public static Map<String, Map.Entry<AudioPlayer, TrackManager>> players = new HashMap<>();
|
||||
public final AudioPlayerManager myManager = new DefaultAudioPlayerManager();
|
||||
|
||||
public void loadTrack(String identifier, CommandEvent event, Message msg) {
|
||||
|
||||
Guild guild = event.getGuild();
|
||||
getPlayer(guild);
|
||||
|
||||
myManager.loadItemOrdered(guild, identifier, new AudioLoadResultHandler() {
|
||||
|
||||
@Override
|
||||
public void trackLoaded(AudioTrack track) {
|
||||
getTrackManager(guild).queue(track, event.getMember());
|
||||
msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.music.play.success.loading.title", "⏯",
|
||||
"", "")
|
||||
.addField(event.getMessageEditor().getTerm("commands.music.play.success.title"), track.getInfo().title, false)
|
||||
.addField(event.getMessageEditor().getTerm("commands.music.play.success.author"), track.getInfo().author, true)
|
||||
.addField(event.getMessageEditor().getTerm("commands.music.play.success.length"),
|
||||
String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(track.getInfo().length),
|
||||
TimeUnit.MILLISECONDS.toMinutes(track.getInfo().length) % TimeUnit.HOURS.toMinutes(1),
|
||||
TimeUnit.MILLISECONDS.toSeconds(track.getInfo().length) % TimeUnit.MINUTES.toSeconds(1)), true)
|
||||
.build()).queue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playlistLoaded(AudioPlaylist playlist) {
|
||||
if (playlist.getSelectedTrack() != null) {
|
||||
trackLoaded(playlist.getSelectedTrack());
|
||||
} else if (playlist.isSearchResult()) {
|
||||
trackLoaded(playlist.getTracks().get(0));
|
||||
} else {
|
||||
for (int i = 0; i < Math.min(playlist.getTracks().size(), 200); i++) {
|
||||
getTrackManager(guild).queue(playlist.getTracks().get(i), event.getMember());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void noMatches() {
|
||||
msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.music.play.error.match.title", "❌",
|
||||
"commands.music.play.error.match.description", "")
|
||||
.build()).queue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadFailed(FriendlyException e) {
|
||||
msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.music.play.error.load.title", "❌",
|
||||
"commands.music.play.error.load.description", "")
|
||||
.build()).queue();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean hasPlayer(Guild guild) {
|
||||
return players.containsKey(guild.getId());
|
||||
}
|
||||
|
|
@ -111,6 +60,93 @@ public class AudioManager {
|
|||
return nPlayer;
|
||||
}
|
||||
|
||||
public void loadTrack(String identifier, CommandEvent event, Message msg) {
|
||||
Guild guild = event.getGuild();
|
||||
getPlayer(guild);
|
||||
|
||||
myManager.loadItemOrdered(guild, identifier, new AudioLoadResultHandler() {
|
||||
|
||||
@Override
|
||||
public void trackLoaded(AudioTrack track) {
|
||||
getTrackManager(guild).queue(track, event.getMember());
|
||||
msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.music.play.success.loading.title", "⏯",
|
||||
"", "")
|
||||
.addField(event.getMessageEditor().getTerm("commands.music.play.success.title"), track.getInfo().title, false)
|
||||
.addField(event.getMessageEditor().getTerm("commands.music.play.success.author"), track.getInfo().author, true)
|
||||
.addField(event.getMessageEditor().getTerm("commands.music.play.success.length"),
|
||||
String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(track.getInfo().length),
|
||||
TimeUnit.MILLISECONDS.toMinutes(track.getInfo().length) % TimeUnit.HOURS.toMinutes(1),
|
||||
TimeUnit.MILLISECONDS.toSeconds(track.getInfo().length) % TimeUnit.MINUTES.toSeconds(1)), true)
|
||||
.build()).queue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playlistLoaded(AudioPlaylist playlist) {
|
||||
if (playlist.getSelectedTrack() != null) {
|
||||
trackLoaded(playlist.getSelectedTrack());
|
||||
} else if (playlist.isSearchResult()) {
|
||||
trackLoaded(playlist.getTracks().get(0));
|
||||
} else {
|
||||
event.getTextChannel().sendMessage("PL loaded :D").queue();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void noMatches() {
|
||||
msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.music.play.error.match.title", "❌",
|
||||
"commands.music.play.error.match.description", "")
|
||||
.build()).queue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadFailed(FriendlyException e) {
|
||||
msg.editMessage(event.getMessageEditor().getMessage(MessageEditor.MessageType.INFO,
|
||||
"commands.music.play.error.load.title", "❌",
|
||||
"commands.music.play.error.load.description", "")
|
||||
.build()).queue();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isDj(Member member) {
|
||||
return member.getRoles().stream().anyMatch(r -> r.getName().equals("DJ"));
|
||||
}
|
||||
|
||||
public boolean isCurrentDj(Member member) {
|
||||
return getTrackManager(member.getGuild()).getTrackInfo(getPlayer(member.getGuild()).getPlayingTrack()).getAuthor().equals(member);
|
||||
}
|
||||
|
||||
public boolean isIdle(CommandEvent event) {
|
||||
if (!hasPlayer(event.getGuild()) || getPlayer(event.getGuild()).getPlayingTrack() == null) {
|
||||
event.getTextChannel().sendMessage(" Idle no song lul :D").queue();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void forceSkipTrack(CommandEvent event) {
|
||||
getPlayer(event.getGuild()).stopTrack();
|
||||
event.getTextChannel().sendMessage("Skipped boyy :D").queue();
|
||||
}
|
||||
|
||||
public String buildQueueMessage(AudioInfo info) {
|
||||
AudioTrackInfo trackInfo = info.getTrack().getInfo();
|
||||
String title = trackInfo.title;
|
||||
long length = trackInfo.length;
|
||||
return "`[ " + getTimestamp(length) + " ]` " + title + "\n";
|
||||
}
|
||||
|
||||
public String getTimestamp(long milis) {
|
||||
long seconds = milis / 1000;
|
||||
long hours = Math.floorDiv(seconds, 3600);
|
||||
seconds = seconds - (hours * 3600);
|
||||
long mins = Math.floorDiv(seconds, 60);
|
||||
seconds = seconds - (mins * 60);
|
||||
return (hours == 0 ? "" : hours + ":") + String.format("%02d", mins) + ":" + String.format("%02d", seconds);
|
||||
}
|
||||
|
||||
public String getOrNull(String s) {
|
||||
return s.isEmpty() ? "N/A" : s;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue