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); + } } } }