Merge branch 'warnpatch' into 'v3'

Weighted warnings now properly apply punishments

See merge request Kwoth/nadekobot!198
This commit is contained in:
Kwoth
2022-02-10 12:52:45 +00:00
2 changed files with 12 additions and 10 deletions

View File

@@ -8,6 +8,6 @@
public bool Forgiven { get; set; }
public string ForgivenBy { get; set; }
public string Moderator { get; set; }
public int Weight { get; set; }
public long Weight { get; set; }
}
}

View File

@@ -63,27 +63,29 @@ namespace NadekoBot.Modules.Administration.Services
Weight = weight,
};
int warnings = 1;
long previousCount;
List<WarningPunishment> ps;
using (var uow = _db.GetDbContext())
{
ps = uow.GuildConfigsForId(guildId, set => set.Include(x => x.WarnPunishments))
.WarnPunishments;
warnings += uow
.Warnings
.ForId(guildId, userId)
.Where(w => !w.Forgiven && w.UserId == userId)
.Sum(x => x.Weight);
previousCount = uow.Warnings.ForId(guildId, userId)
.Where(w => !w.Forgiven && w.UserId == userId)
.Sum(x => x.Weight);
uow.Warnings.Add(warn);
uow.SaveChanges();
await uow.SaveChangesAsync();
}
var p = ps.FirstOrDefault(x => x.Count == warnings);
var totalCount = previousCount + weight;
var p = ps.Where(x => x.Count > previousCount && x.Count <= totalCount)
.OrderByDescending(x => x.Count)
.FirstOrDefault();
if (p != null)
if (p is not null)
{
var user = await guild.GetUserAsync(userId).ConfigureAwait(false);
if (user is null)