improved .xplb -c, it will now correctly work only on users who are still in the server, isntead of only top 1k

Fixed marmalade error on bot startup
This commit is contained in:
Toastie 2024-10-05 14:14:33 +13:00
parent 5c72c6562f
commit 113dc3748a
Signed by: toastie_t0ast
GPG key ID: 27F3B6855AFD40A4
4 changed files with 60 additions and 61 deletions
src/EllieBot/Modules/Xp

View file

@ -183,27 +183,26 @@ public partial class Xp : EllieModule<XpService>
await ctx.Channel.TriggerTypingAsync();
var socketGuild = (SocketGuild)ctx.Guild;
var allCleanUsers = new List<UserXpStats>();
if (opts.Clean)
async Task<IReadOnlyCollection<UserXpStats>> GetPageItems(int curPage)
{
await ctx.Channel.TriggerTypingAsync();
await _tracker.EnsureUsersDownloadedAsync(ctx.Guild);
var socketGuild = (SocketGuild)ctx.Guild;
if (opts.Clean)
{
await ctx.Channel.TriggerTypingAsync();
await _tracker.EnsureUsersDownloadedAsync(ctx.Guild);
allCleanUsers = (await _service.GetTopUserXps(ctx.Guild.Id, 1000))
.Where(user => socketGuild.GetUser(user.UserId) is not null)
.ToList();
return await _service.GetTopUserXps(ctx.Guild.Id,
socketGuild.Users.Select(x => x.Id).ToList(),
curPage);
}
return await _service.GetUserXps(ctx.Guild.Id, curPage);
}
var res = opts.Clean
? Response()
await Response()
.Paginated()
.Items(allCleanUsers)
: Response()
.Paginated()
.PageItems((curPage) => _service.GetUserXps(ctx.Guild.Id, curPage));
await res
.PageItems(GetPageItems)
.PageSize(9)
.CurrentPage(page)
.Page((users, curPage) =>