From 0170536d1c6941f267956ec06816fbee83f4df84 Mon Sep 17 00:00:00 2001 From: Kwoth Date: Thu, 11 Aug 2022 13:54:20 +0200 Subject: [PATCH] Guild XP is no longer opt-in. Only global xp --- src/NadekoBot/Modules/Xp/XpService.cs | 37 ++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/NadekoBot/Modules/Xp/XpService.cs b/src/NadekoBot/Modules/Xp/XpService.cs index f3a9d596d..5b9159450 100644 --- a/src/NadekoBot/Modules/Xp/XpService.cs +++ b/src/NadekoBot/Modules/Xp/XpService.cs @@ -212,8 +212,43 @@ public class XpService : INService, IReadyExecutor, IExecNoCommand Xp = old.Xp + group.Key }, (_, n) => n); - + gxps.AddRange(items); + + var missingUserIds = group.Where(userId => !items.Any(x => x.UserId == userId)).ToArray(); + foreach (var userId in missingUserIds) + { + await ctx + .UserXpStats + .ToLinqToDBTable() + .InsertOrUpdateAsync(() => new UserXpStats() + { + UserId = userId, + GuildId = guildId, + Xp = group.Key, + DateAdded = DateTime.UtcNow, + AwardedXp = 0, + NotifyOnLevelUp = XpNotificationLocation.None + }, + _ => new() + { + + }, + () => new() + { + UserId = userId + }); + } + + if (missingUserIds.Length > 0) + { + var missingItems = await ctx.UserXpStats + .ToLinqToDBTable() + .Where(x => missingUserIds.Contains(x.UserId)) + .ToArrayAsyncLinqToDB(); + + gxps.AddRange(missingItems); + } } } }