예제 #1
0
        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();
            }
        }
예제 #2
0
 private async Task <ModerationMuteRoleMappingBrief> TryGetActiveMuteRoleMapping(ulong guildId)
 => (await ModerationMuteRoleMappingRepository
     .SearchBriefsAsync(new ModerationMuteRoleMappingSearchCriteria()
 {
     GuildId = guildId,
     IsDeleted = false
 }))
 .FirstOrDefault();
예제 #3
0
        /// <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);
            }
        }