private async Task CreateOrUpdateMuteRoleMapping(ulong guildId, ulong muteRoleId) { using (var transaction = await ModerationMuteRoleMappingRepository.BeginCreateTransactionAsync()) { var mapping = await TryGetActiveMuteRoleMapping(guildId); if (mapping != null) { if (muteRoleId == mapping.MuteRoleId) { return; } await ModerationMuteRoleMappingRepository.TryDeleteAsync(mapping.Id, DiscordClient.CurrentUser.Id); } await ModerationMuteRoleMappingRepository.CreateAsync(new ModerationMuteRoleMappingCreationData() { GuildId = guildId, MuteRoleId = muteRoleId, CreatedById = DiscordClient.CurrentUser.Id }); transaction.Commit(); } }
private async Task <ModerationMuteRoleMappingBrief> TryGetActiveMuteRoleMapping(ulong guildId) => (await ModerationMuteRoleMappingRepository .SearchBriefsAsync(new ModerationMuteRoleMappingSearchCriteria() { GuildId = guildId, IsDeleted = false })) .FirstOrDefault();
/// <inheritdoc /> public async Task UnConfigureGuildAsync(IGuild guild) { foreach (var mapping in await ModerationMuteRoleMappingRepository .SearchBriefsAsync(new ModerationMuteRoleMappingSearchCriteria() { GuildId = guild.Id, IsDeleted = false, })) { IDeletable muteRole = guild.Roles.FirstOrDefault(x => x.Id == mapping.MuteRoleId); if (muteRole != null) { await muteRole.DeleteAsync(); } await ModerationMuteRoleMappingRepository.TryDeleteAsync(mapping.Id, DiscordClient.CurrentUser.Id); } }