private async Task UpdateAutoVoiceChannels(DiscordGuild guild, AutoVoiceSettings settings) { var voiceChannelIds = settings.VoiceChannels .Select(v => v.VoiceChannelId) .ToList(); foreach (var voiceChannelId in voiceChannelIds) { var voiceChannel = guild.GetChannel(voiceChannelId); if (voiceChannel is null) { settings.RemoveChannel(voiceChannelId); } else if (!voiceChannel.Users.Any()) { settings.RemoveChannel(voiceChannelId); await voiceChannel.DeleteAsync(); } else { await _autoVoiceService.UpdateNameAsync(voiceChannel); } } }
private async Task OnUserLeft(DiscordChannel?voiceChannel, AutoVoiceSettings settings) { if (voiceChannel is null) { return; } if (!settings.ContainsChannel(voiceChannel)) { return; } if (voiceChannel.Users.Any()) { await _autoVoiceService.UpdateNameAsync(voiceChannel); return; } // All users left, now we can delete the channel if (settings.RemoveChannel(voiceChannel)) { await voiceChannel.DeleteAsync(); } }