Пример #1
0
        public void SendPayload(LavaPayload load)
        {
            var data = JsonConvert.SerializeObject(load);

            SendAsync(data).RunSync();
            _lavalink.LogDebug(JsonConvert.SerializeObject(load));
        }
Пример #2
0
        private async Task OnUVSU(SocketUser user, SocketVoiceState oldState, SocketVoiceState newState)
        {
            if (user.Id != _baseClient.CurrentUser.Id)
            {
                return;
            }

            switch (oldState)
            {
            case var state when state.VoiceChannel is null && !(newState.VoiceChannel is null):
                _voiceState = newState;
                _lavalink.LogDebug($"Voice state updated. Voice session Id: {_voiceState.VoiceSessionId}");
                break;

            case var state when !(state.VoiceChannel is null) && newState.VoiceChannel is null:
                if (!_players.TryGetValue(state.VoiceChannel.Guild.Id, out var oldPlayer))
                {
                    return;
                }
                await oldPlayer.DisconnectAsync().ConfigureAwait(false);

                _players.TryRemove(state.VoiceChannel.Guild.Id, out _);
                LavaSocket.SendPayload(new DestroyPayload(state.VoiceChannel.Guild.Id));
                break;

            case var state when state.VoiceChannel?.Id != newState.VoiceChannel?.Id:
                if (!_players.TryGetValue(state.VoiceChannel.Guild.Id, out var updatePlayer))
                {
                    return;
                }
                updatePlayer.VoiceChannel = newState.VoiceChannel;
                _players.TryUpdate(state.VoiceChannel.Guild.Id, updatePlayer, updatePlayer);
                _lavalink.LogInfo(
                    $"Moved from {state.VoiceChannel.Name} to {newState.VoiceChannel.Name}.");
                break;
            }
        }