コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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();
            }
        }