Ejemplo n.º 1
0
        protected override async Task Cleanup()
        {
            await base.Cleanup().ConfigureAwait(false);

            if (_config.VoiceMode != DiscordVoiceMode.Disabled)
            {
                if (Config.EnableVoiceMultiserver)
                {
                    var tasks = _voiceClients
                                .Select(x => x.Value.Disconnect())
                                .ToArray();
                    _voiceClients.Clear();
                    await Task.WhenAll(tasks).ConfigureAwait(false);
                }
            }

            if (Config.UseMessageQueue)
            {
                Message ignored;
                while (_pendingMessages.TryDequeue(out ignored))
                {
                }
            }

            await _api.Logout().ConfigureAwait(false);

            _channels.Clear();
            _users.Clear();
            _messages.Clear();
            _roles.Clear();
            _servers.Clear();
            _globalUsers.Clear();

            _currentUser = null;
        }