internal void Update(Model model)
        {
            Name              = model.Name;
            Type              = model.Type;
            IsEnabled         = model.Enabled;
            IsSyncing         = model.Syncing;
            ExpireBehavior    = model.ExpireBehavior;
            ExpireGracePeriod = model.ExpireGracePeriod;
            _syncedAtTicks    = model.SyncedAt.UtcTicks;

            RoleId = model.RoleId;
            User   = RestUser.Create(Discord, model.User);
        }
        public async Task ModifyAsync(Action <GuildIntegrationProperties> func)
        {
            if (func == null)
            {
                throw new NullReferenceException(nameof(func));
            }

            GuildIntegrationProperties args = new GuildIntegrationProperties();

            func(args);
            API.Rest.ModifyGuildIntegrationParams apiArgs = new API.Rest.ModifyGuildIntegrationParams
            {
                EnableEmoticons   = args.EnableEmoticons,
                ExpireBehavior    = args.ExpireBehavior,
                ExpireGracePeriod = args.ExpireGracePeriod
            };
            Model model = await Discord.ApiClient.ModifyGuildIntegrationAsync(GuildId, Id, apiArgs).ConfigureAwait(false);

            Update(model);
        }
        internal static RestGuildIntegration Create(BaseDiscordClient discord, IGuild guild, Model model)
        {
            RestGuildIntegration entity = new RestGuildIntegration(discord, guild, model.Id);

            entity.Update(model);
            return(entity);
        }