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(); } }
public async ValueTask <AutoVoiceSettings> GetOrCreateAsync(DiscordGuild guild) { var result = await GetAsync(guild); if (result is null) { result = new AutoVoiceSettings(guild.Id); await _context.AutoVoiceSettings.AddAsync(result); } return(result); }
private async Task DisableModuleAsync(DiscordGuild guild, AutoVoiceSettings settings) { foreach (var voiceChannelId in settings.VoiceChannels.Select(v => v.VoiceChannelId)) { var voiceChannel = guild.GetChannel(voiceChannelId); if (voiceChannel is not null) { await voiceChannel.DeleteAsync(); } } settings.ChannelCreatorId = null; settings.RemoveAllChannels(); }
private async Task OnUserJoin(DiscordChannel?voiceChannel, AutoVoiceSettings settings) { if (voiceChannel is null) { return; } if (settings.ContainsChannel(voiceChannel)) { await _autoVoiceService.UpdateNameAsync(voiceChannel); } else if (settings.ChannelCreatorId == voiceChannel.Id) { await _autoVoiceService.UpdateNameAsync(voiceChannel); var newVoiceChannel = await _autoVoiceService.CreateAsync(voiceChannel.Guild, voiceChannel.Parent, settings.Bitrate); settings.AddChannel(newVoiceChannel); } }
public async Task AddAsync(AutoVoiceSettings settings) { await _context.AutoVoiceSettings.AddAsync(settings); }