public async Task AddWarningAsync ( [NotNull] IGuildUser user, [NotNull] string content, TimeSpan?expiresAfter = null ) { DateTime?expiresOn = null; if (!(expiresAfter is null)) { expiresOn = DateTime.Now.Add(expiresAfter.Value); } var addWarning = await _warnings.CreateWarningAsync(this.Context.User, user, content, expiresOn : expiresOn); if (!addWarning.IsSuccess) { await _feedback.SendErrorAsync(this.Context, addWarning.ErrorReason); return; } var warning = addWarning.Entity; await _feedback.SendConfirmationAsync(this.Context, $"Warning added (ID {warning.ID})."); await _logging.NotifyUserWarningAdded(warning); var getSettings = await _moderation.GetOrCreateServerSettingsAsync(this.Context.Guild); if (!getSettings.IsSuccess) { return; } var settings = getSettings.Entity; var warningCount = await _warnings.GetWarnings(user).CountAsync(); if (warningCount >= settings.WarningThreshold) { await _feedback.SendWarningAsync ( this.Context, $"The warned user now has {warningCount} warnings. Consider further action." ); } }