Пример #1
0
        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."
                );
            }
        }