= Condense, iterative
This commit is contained in:
+85
-56
@@ -7,12 +7,14 @@ import java.util.Map;
|
|||||||
import javax.security.auth.login.LoginException;
|
import javax.security.auth.login.LoginException;
|
||||||
|
|
||||||
import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
|
import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
|
||||||
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
|
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 com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
|
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
|
||||||
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
|
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
|
||||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
||||||
|
import com.sedmelluq.discord.lavaplayer.track.playback.AudioFrame;
|
||||||
|
|
||||||
import core.CharacterManager;
|
import core.CharacterManager;
|
||||||
import core.CommandEnabler;
|
import core.CommandEnabler;
|
||||||
@@ -31,6 +33,7 @@ import dataStructures.UserInput;
|
|||||||
import net.dv8tion.jda.core.AccountType;
|
import net.dv8tion.jda.core.AccountType;
|
||||||
import net.dv8tion.jda.core.JDA;
|
import net.dv8tion.jda.core.JDA;
|
||||||
import net.dv8tion.jda.core.JDABuilder;
|
import net.dv8tion.jda.core.JDABuilder;
|
||||||
|
import net.dv8tion.jda.core.audio.AudioSendHandler;
|
||||||
import net.dv8tion.jda.core.entities.Guild;
|
import net.dv8tion.jda.core.entities.Guild;
|
||||||
import net.dv8tion.jda.core.entities.TextChannel;
|
import net.dv8tion.jda.core.entities.TextChannel;
|
||||||
import net.dv8tion.jda.core.entities.VoiceChannel;
|
import net.dv8tion.jda.core.entities.VoiceChannel;
|
||||||
@@ -47,14 +50,45 @@ import utils.GlobalLog;
|
|||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class Main extends ListenerAdapter
|
public class Main extends ListenerAdapter
|
||||||
{
|
{
|
||||||
|
public class AudioPlayerSendHandler implements AudioSendHandler
|
||||||
|
{
|
||||||
|
private final AudioPlayer audioPlayer;
|
||||||
|
private AudioFrame lastFrame;
|
||||||
|
|
||||||
|
public AudioPlayerSendHandler(AudioPlayer audioPlayer)
|
||||||
|
{
|
||||||
|
this.audioPlayer = audioPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canProvide()
|
||||||
|
{
|
||||||
|
lastFrame = audioPlayer.provide();
|
||||||
|
return lastFrame != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public byte[] provide20MsAudio()
|
||||||
|
{
|
||||||
|
return lastFrame.getData();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public boolean isOpus()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class SmallAudio implements AudioLoadResultHandler
|
public class SmallAudio implements AudioLoadResultHandler
|
||||||
{
|
{
|
||||||
private TextChannel channel;
|
private TextChannel channel;
|
||||||
|
private Guild guild;
|
||||||
private GuildMusicManager manager;
|
private GuildMusicManager manager;
|
||||||
|
|
||||||
private SmallAudio(TextChannel channel, GuildMusicManager manager) {
|
private SmallAudio(TextChannel channel, Guild guild, GuildMusicManager manager)
|
||||||
|
{
|
||||||
this.channel = channel;
|
this.channel = channel;
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
|
this.guild = guild;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void loadFailed(FriendlyException arg0) { }
|
@Override public void loadFailed(FriendlyException arg0) { }
|
||||||
@@ -62,8 +96,22 @@ public class Main extends ListenerAdapter
|
|||||||
@Override public void playlistLoaded(AudioPlaylist arg0) { }
|
@Override public void playlistLoaded(AudioPlaylist arg0) { }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void trackLoaded(AudioTrack track) {
|
public void trackLoaded(AudioTrack track)
|
||||||
play(channel.getGuild(), manager, track);
|
{
|
||||||
|
connectToFirstVoiceChannel(guild.getAudioManager());
|
||||||
|
manager.scheduler.queue(track);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void connectToFirstVoiceChannel(AudioManager audioManager)
|
||||||
|
{
|
||||||
|
if (!audioManager.isConnected() && !audioManager.isAttemptingToConnect())
|
||||||
|
{
|
||||||
|
for (VoiceChannel voiceChannel : audioManager.getGuild().getVoiceChannels())
|
||||||
|
{
|
||||||
|
audioManager.openAudioConnection(voiceChannel);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,72 +128,53 @@ public class Main extends ListenerAdapter
|
|||||||
// Initialization and setup
|
// Initialization and setup
|
||||||
public static void main(String[] args) throws InterruptedException, LoginException, Exception
|
public static void main(String[] args) throws InterruptedException, LoginException, Exception
|
||||||
{
|
{
|
||||||
JDA bot = new JDABuilder(AccountType.BOT).setToken(Ref.TestToken).buildBlocking();
|
JDA bot = new JDABuilder(AccountType.BOT).setToken(Ref.TestToken).buildBlocking();
|
||||||
bot.addEventListener(new Main());
|
bot.addEventListener(new Main());
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public final AudioPlayerManager playerManager;
|
public final AudioPlayerManager playerManager;
|
||||||
private final Map<Long, GuildMusicManager> musicManagers;
|
private final Map<Long, GuildMusicManager> musicManagers;
|
||||||
|
|
||||||
public Main() {
|
public Main()
|
||||||
this.musicManagers = new HashMap<>();
|
{
|
||||||
|
this.musicManagers = new HashMap<>();
|
||||||
|
|
||||||
this.playerManager = new DefaultAudioPlayerManager();
|
this.playerManager = new DefaultAudioPlayerManager();
|
||||||
AudioSourceManagers.registerRemoteSources(playerManager);
|
AudioSourceManagers.registerRemoteSources(playerManager);
|
||||||
AudioSourceManagers.registerLocalSource(playerManager);
|
AudioSourceManagers.registerLocalSource(playerManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized GuildMusicManager getGuildAudioPlayer(Guild guild) {
|
private synchronized GuildMusicManager getGuildAudioPlayer(Guild guild)
|
||||||
long guildId = Long.parseLong(guild.getId());
|
{
|
||||||
GuildMusicManager musicManager = musicManagers.get(guildId);
|
long guildId = Long.parseLong(guild.getId());
|
||||||
|
GuildMusicManager musicManager = musicManagers.get(guildId);
|
||||||
|
|
||||||
if (musicManager == null) {
|
if (musicManager == null) {
|
||||||
musicManager = new GuildMusicManager(playerManager);
|
musicManager = new GuildMusicManager(playerManager);
|
||||||
musicManagers.put(guildId, musicManager);
|
musicManagers.put(guildId, musicManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
guild.getAudioManager().setSendingHandler(musicManager.getSendHandler());
|
guild.getAudioManager().setSendingHandler(musicManager.getSendHandler());
|
||||||
|
|
||||||
return musicManager;
|
return musicManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onGuildMessageReceived(GuildMessageReceivedEvent event)
|
public void onGuildMessageReceived(GuildMessageReceivedEvent event)
|
||||||
{
|
{
|
||||||
if (event.getMessage().getContentRaw().contains("!play"))
|
if(event.getMessage().getContentRaw().contains("!hasan"))
|
||||||
{
|
{
|
||||||
final TextChannel channel = event.getChannel();
|
final TextChannel channel = event.getChannel();
|
||||||
final Guild guild = channel.getGuild();
|
final Guild guild = channel.getGuild();
|
||||||
|
|
||||||
channel.sendMessage("Doing something...");
|
GuildMusicManager musicManager = getGuildAudioPlayer(guild);
|
||||||
|
playerManager.loadItemOrdered(musicManager, "https://www.youtube.com/watch?v=qL-JCVA22Lo", new SmallAudio(channel, guild, musicManager));
|
||||||
|
}
|
||||||
|
|
||||||
GuildMusicManager musicManager = getGuildAudioPlayer(guild);
|
super.onGuildMessageReceived(event);
|
||||||
connectToFirstVoiceChannel(guild.getAudioManager());
|
}
|
||||||
playerManager.loadItemOrdered(musicManager, "https://www.youtube.com/watch?v=qL-JCVA22Lo", new SmallAudio(channel, musicManager));
|
|
||||||
}
|
|
||||||
|
|
||||||
super.onGuildMessageReceived(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void play(Guild guild, GuildMusicManager musicManager, AudioTrack track) {
|
|
||||||
connectToFirstVoiceChannel(guild.getAudioManager());
|
|
||||||
|
|
||||||
musicManager.scheduler.queue(track);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void connectToFirstVoiceChannel(AudioManager audioManager) {
|
|
||||||
if (!audioManager.isConnected() && !audioManager.isAttemptingToConnect()) {
|
|
||||||
for (VoiceChannel voiceChannel : audioManager.getGuild().getVoiceChannels()) {
|
|
||||||
audioManager.openAudioConnection(voiceChannel);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------------------------------------------------------------------------------------------
|
/* ----------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -12,30 +12,30 @@ import net.dv8tion.jda.core.audio.AudioSendHandler;
|
|||||||
*/
|
*/
|
||||||
public class AudioPlayerSendHandler implements AudioSendHandler
|
public class AudioPlayerSendHandler implements AudioSendHandler
|
||||||
{
|
{
|
||||||
private final AudioPlayer audioPlayer;
|
private final AudioPlayer audioPlayer;
|
||||||
private AudioFrame lastFrame;
|
private AudioFrame lastFrame;
|
||||||
|
|
||||||
public AudioPlayerSendHandler(AudioPlayer audioPlayer)
|
public AudioPlayerSendHandler(AudioPlayer audioPlayer)
|
||||||
{
|
{
|
||||||
this.audioPlayer = audioPlayer;
|
this.audioPlayer = audioPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canProvide()
|
public boolean canProvide()
|
||||||
{
|
{
|
||||||
lastFrame = audioPlayer.provide();
|
lastFrame = audioPlayer.provide();
|
||||||
return lastFrame != null;
|
return lastFrame != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public byte[] provide20MsAudio()
|
public byte[] provide20MsAudio()
|
||||||
{
|
{
|
||||||
return lastFrame.getData();
|
return lastFrame.getData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isOpus()
|
public boolean isOpus()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user