Search in sources :

Example 1 with VoiceConnection

use of io.discloader.discloader.entity.voice.VoiceConnection in project DiscLoader by R3alCl0ud.

the class VoiceChannel method join.

@Override
public CompletableFuture<VoiceConnection> join() {
    if (EntityRegistry.getVoiceConnectionByID(guild.getID()) != null) {
        VoiceConnection connection = EntityRegistry.getVoiceConnectionByID(guild.getID());
        connection.updateChannel(this);
        return CompletableFuture.completedFuture(connection);
    }
    CompletableFuture<VoiceConnection> future = new CompletableFuture<VoiceConnection>();
    VoiceConnection connection = new VoiceConnection(this, future);
    EntityRegistry.addVoiceConnection(connection);
    return future;
}
Also used : VoiceConnection(io.discloader.discloader.entity.voice.VoiceConnection) CompletableFuture(java.util.concurrent.CompletableFuture)

Example 2 with VoiceConnection

use of io.discloader.discloader.entity.voice.VoiceConnection in project DiscLoader by R3alCl0ud.

the class IGuildVoiceChannel method join.

@Override
public default CompletableFuture<VoiceConnection> join() {
    CompletableFuture<VoiceConnection> future = new CompletableFuture<>();
    if (EntityRegistry.getVoiceConnectionByID(getGuild().getID()) != null) {
        EntityRegistry.getVoiceConnectionByID(getGuild().getID()).disconnect().thenAcceptAsync(action -> {
            VoiceConnection connection = new VoiceConnection(this, future);
            EntityRegistry.addVoiceConnection(connection);
        });
        return future;
    }
    VoiceConnection connection = new VoiceConnection(this, future);
    EntityRegistry.addVoiceConnection(connection);
    return future;
}
Also used : VoiceConnection(io.discloader.discloader.entity.voice.VoiceConnection) CompletableFuture(java.util.concurrent.CompletableFuture)

Example 3 with VoiceConnection

use of io.discloader.discloader.entity.voice.VoiceConnection in project DiscLoader by R3alCl0ud.

the class VoiceServerUpdate method handle.

public void handle(SocketPacket packet) {
    try {
        VoiceServerUpdateJSON data = gson.fromJson(gson.toJson(packet.d), VoiceServerUpdateJSON.class);
        VoiceConnection connection = EntityRegistry.getVoiceConnectionByID(SnowflakeUtil.parse(data.guild_id));
        if (connection != null) {
            connection.endpointReceived(data.endpoint, data.token);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : VoiceConnection(io.discloader.discloader.entity.voice.VoiceConnection) VoiceServerUpdateJSON(io.discloader.discloader.network.json.VoiceServerUpdateJSON)

Example 4 with VoiceConnection

use of io.discloader.discloader.entity.voice.VoiceConnection in project DiscLoader by R3alCl0ud.

the class VoiceStateUpdate method handle.

@Override
public void handle(SocketPacket packet) {
    String d = this.gson.toJson(packet.d);
    VoiceStateJSON data = this.gson.fromJson(d, VoiceStateJSON.class);
    IGuild guild = EntityRegistry.getGuildByID(data.guild_id);
    if (guild.getMember(data.user_id) == null)
        return;
    VoiceState currentState = new VoiceState(data, guild);
    VoiceState oldState = guild.getVoiceStates().get(SnowflakeUtil.parse(data.user_id));
    VoiceConnection connection = EntityRegistry.getVoiceConnectionByID(guild.getID());
    if (connection != null && SnowflakeUtil.toString(loader.user).equals(data.user_id)) {
        connection.setSessionID(data.session_id);
        connection.setStateUpdated(true);
        connection.setVoiceChannel(currentState.channel);
    }
    guild.updateVoiceState(currentState);
    if (shouldEmit()) {
        if (currentState.channel != null && (oldState != null && oldState.channel != null)) {
            loader.emit(new VoiceSwitchEvent(currentState.member, oldState.channel));
        } else if (currentState.channel != null) {
            loader.emit(new VoiceJoinEvent(currentState.member));
        } else if (oldState != null && oldState.channel != null) {
            loader.emit(new VoiceLeaveEvent(currentState.member, oldState.channel));
        }
        if (oldState != null) {
            VoiceStateUpdateEvent event = new VoiceStateUpdateEvent(oldState, currentState);
            loader.emit(event);
        }
    }
}
Also used : VoiceSwitchEvent(io.discloader.discloader.common.event.guild.member.GuildMemberEvent.VoiceSwitchEvent) VoiceConnection(io.discloader.discloader.entity.voice.VoiceConnection) VoiceStateUpdateEvent(io.discloader.discloader.common.event.voice.VoiceStateUpdateEvent) VoiceState(io.discloader.discloader.entity.voice.VoiceState) VoiceLeaveEvent(io.discloader.discloader.common.event.guild.member.GuildMemberEvent.VoiceLeaveEvent) VoiceJoinEvent(io.discloader.discloader.common.event.guild.member.GuildMemberEvent.VoiceJoinEvent) VoiceStateJSON(io.discloader.discloader.network.json.VoiceStateJSON) IGuild(io.discloader.discloader.entity.guild.IGuild)

Example 5 with VoiceConnection

use of io.discloader.discloader.entity.voice.VoiceConnection in project DiscLoader by R3alCl0ud.

the class Main method testVoiceThings.

public static CompletableFuture<Void> testVoiceThings(IGuild guild, IChannelCategory category) {
    CompletableFuture<Void> future = new CompletableFuture<>();
    CompletableFuture<IGuildVoiceChannel> f13 = category.createVoiceChannel("voice-channel");
    f13.exceptionally(ex -> {
        logger.severe("Test Failed");
        ex.printStackTrace();
        System.exit(13);
        return null;
    });
    f13.thenAcceptAsync(voicechannel -> {
        AvoidRateLimits();
        CompletableFuture<VoiceConnection> f14 = voicechannel.join();
        f14.exceptionally(ex -> {
            logger.severe("Test Failed");
            ex.printStackTrace();
            System.exit(14);
            return null;
        });
        f14.thenAcceptAsync(voiceconnection -> {
            voiceconnection.addListener(new VoiceEventAdapter() {

                @Override
                public void end(AudioTrack track, AudioTrackEndReason endReason) {
                    logger.info("Track Finished Playing");
                    if (endReason == AudioTrackEndReason.LOAD_FAILED) {
                        logger.severe("Test Failed\nFailed to load the audio track.");
                        System.exit(15);
                        return;
                    }
                    CompletableFuture<VoiceConnection> f16 = voiceconnection.disconnect();
                    f16.exceptionally(ex -> {
                        logger.severe("Test Failed");
                        ex.printStackTrace();
                        System.exit(16);
                        return null;
                    });
                    f16.thenAcceptAsync(vc -> {
                        logger.config("Disconnected From VC");
                        future.complete(null);
                    });
                }
            });
            voiceconnection.play("./audio_test.wav");
        });
    });
    return future;
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) Options(io.discloader.discloader.common.start.Options) Gson(com.google.gson.Gson) RichEmbed(io.discloader.discloader.core.entity.message.embed.RichEmbed) DiscLoader(io.discloader.discloader.common.DiscLoader) DLLogger(io.discloader.discloader.common.logger.DLLogger) AudioTrackEndReason(com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason) IGuild(io.discloader.discloader.entity.guild.IGuild) IGuildVoiceChannel(io.discloader.discloader.entity.channel.IGuildVoiceChannel) IUser(io.discloader.discloader.entity.user.IUser) Files(java.nio.file.Files) VoiceEventAdapter(io.discloader.discloader.entity.voice.VoiceEventAdapter) VoiceConnection(io.discloader.discloader.entity.voice.VoiceConnection) IOException(java.io.IOException) Logger(java.util.logging.Logger) File(java.io.File) ExecutionException(java.util.concurrent.ExecutionException) IGuildTextChannel(io.discloader.discloader.entity.channel.IGuildTextChannel) Paths(java.nio.file.Paths) CommandRegistry(io.discloader.discloader.common.registry.CommandRegistry) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) UnauthorizedException(io.discloader.discloader.common.exceptions.UnauthorizedException) IChannelCategory(io.discloader.discloader.entity.channel.IChannelCategory) IMessage(io.discloader.discloader.entity.message.IMessage) DLOptions(io.discloader.discloader.common.DLOptions) VoiceConnection(io.discloader.discloader.entity.voice.VoiceConnection) CompletableFuture(java.util.concurrent.CompletableFuture) AudioTrackEndReason(com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason) VoiceEventAdapter(io.discloader.discloader.entity.voice.VoiceEventAdapter) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) IGuildVoiceChannel(io.discloader.discloader.entity.channel.IGuildVoiceChannel)

Aggregations

VoiceConnection (io.discloader.discloader.entity.voice.VoiceConnection)6 CompletableFuture (java.util.concurrent.CompletableFuture)4 IGuild (io.discloader.discloader.entity.guild.IGuild)3 Gson (com.google.gson.Gson)2 AudioTrack (com.sedmelluq.discord.lavaplayer.track.AudioTrack)2 AudioTrackEndReason (com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason)2 DLOptions (io.discloader.discloader.common.DLOptions)2 DiscLoader (io.discloader.discloader.common.DiscLoader)2 UnauthorizedException (io.discloader.discloader.common.exceptions.UnauthorizedException)2 DLLogger (io.discloader.discloader.common.logger.DLLogger)2 CommandRegistry (io.discloader.discloader.common.registry.CommandRegistry)2 Options (io.discloader.discloader.common.start.Options)2 RichEmbed (io.discloader.discloader.core.entity.message.embed.RichEmbed)2 IChannelCategory (io.discloader.discloader.entity.channel.IChannelCategory)2 IGuildTextChannel (io.discloader.discloader.entity.channel.IGuildTextChannel)2 IGuildVoiceChannel (io.discloader.discloader.entity.channel.IGuildVoiceChannel)2 IMessage (io.discloader.discloader.entity.message.IMessage)2 IUser (io.discloader.discloader.entity.user.IUser)2 VoiceEventAdapter (io.discloader.discloader.entity.voice.VoiceEventAdapter)2 File (java.io.File)2