Small pagination bugfix
This commit is contained in:
parent
88f92cbec6
commit
e54ceba0ab
@ -146,7 +146,7 @@ namespace NadekoBot.Modules.Administration
|
||||
.WithTitle(GetText("self_assign_list", roleCnt))
|
||||
.WithDescription(string.Join("\n", roles.Skip(curPage * 10).Take(10)))
|
||||
.WithOkColor();
|
||||
}, roles.Count / 10);
|
||||
}, roles.Count, 10);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
|
@ -259,7 +259,7 @@ namespace NadekoBot.Modules.Administration
|
||||
.WithTitle(status)
|
||||
.WithOkColor()
|
||||
.WithDescription(str);
|
||||
}, allShardStrings.Length / 25);
|
||||
}, allShardStrings.Length, 25);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
|
@ -34,7 +34,7 @@ namespace NadekoBot.Modules.Administration
|
||||
.WithOkColor()
|
||||
.WithTitle(GetText("timezones_available"))
|
||||
.WithDescription(string.Join("\n", timezones.Skip(curPage * timezonesPerPage).Take(timezonesPerPage).Select(x => $"`{x.Id,-25}` {(x.BaseUtcOffset < TimeSpan.Zero? "-" : "+")}{x.BaseUtcOffset:hhmm}"))),
|
||||
timezones.Length / timezonesPerPage);
|
||||
timezones.Length, timezonesPerPage);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
|
@ -154,7 +154,7 @@ namespace NadekoBot.Modules.Administration
|
||||
.WithTitle(GetText("warnings_list"))
|
||||
.WithDescription(string.Join("\n", ws));
|
||||
|
||||
}, warnings.Length / 15);
|
||||
}, warnings.Length, 15);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
|
@ -152,7 +152,6 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
return;
|
||||
}
|
||||
|
||||
var lastPage = customReactions.Length / 20;
|
||||
await Context.Channel.SendPaginatedConfirmAsync(_client, page, curPage =>
|
||||
new EmbedBuilder().WithOkColor()
|
||||
.WithTitle(GetText("name"))
|
||||
@ -171,7 +170,7 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
str = "📪" + str;
|
||||
}
|
||||
return str;
|
||||
}))), lastPage)
|
||||
}))), customReactions.Length, 20)
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@ -231,15 +230,14 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
.OrderBy(cr => cr.Key)
|
||||
.ToList();
|
||||
|
||||
var lastPage = ordered.Count / 20;
|
||||
await Context.Channel.SendPaginatedConfirmAsync(_client, page, (curPage) =>
|
||||
new EmbedBuilder().WithOkColor()
|
||||
.WithTitle(GetText("name"))
|
||||
.WithDescription(string.Join("\r\n", ordered
|
||||
.Skip(curPage * 20)
|
||||
.Take(20)
|
||||
.Select(cr => $"**{cr.Key.Trim().ToLowerInvariant()}** `x{cr.Count()}`"))), lastPage)
|
||||
.ConfigureAwait(false);
|
||||
.Select(cr => $"**{cr.Key.Trim().ToLowerInvariant()}** `x{cr.Count()}`"))),
|
||||
ordered.Count, 20).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -492,12 +490,12 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
var ordered = _service.ReactionStats.OrderByDescending(x => x.Value).ToArray();
|
||||
if (!ordered.Any())
|
||||
return;
|
||||
var lastPage = ordered.Length / 9;
|
||||
await Context.Channel.SendPaginatedConfirmAsync(_client, page,
|
||||
(curPage) => ordered.Skip(curPage * 9)
|
||||
.Take(9)
|
||||
.Aggregate(new EmbedBuilder().WithOkColor().WithTitle(GetText("stats")),
|
||||
(agg, cur) => agg.AddField(efb => efb.WithName(cur.Key).WithValue(cur.Value.ToString()).WithIsInline(true))), lastPage)
|
||||
(agg, cur) => agg.AddField(efb => efb.WithName(cur.Key).WithValue(cur.Value.ToString()).WithIsInline(true))),
|
||||
ordered.Length, 9)
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
embed.AddField(efb => efb.WithName($"#{curPage * 9 + i + 1} - {entry.Price}{_bc.BotConfig.CurrencySign}").WithValue(EntryToString(entry)).WithIsInline(true));
|
||||
}
|
||||
return embed;
|
||||
}, entries.Count / 9, true);
|
||||
}, entries.Count, 9, true);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
|
@ -258,7 +258,6 @@ namespace NadekoBot.Modules.Music
|
||||
total.Minutes,
|
||||
total.Seconds);
|
||||
var maxPlaytime = mp.MaxPlaytimeSeconds;
|
||||
var lastPage = songs.Length / itemsPerPage;
|
||||
Func<int, EmbedBuilder> printAction = curPage =>
|
||||
{
|
||||
var startAt = itemsPerPage * curPage;
|
||||
@ -300,7 +299,7 @@ namespace NadekoBot.Modules.Music
|
||||
desc = add + "\n" + desc;
|
||||
|
||||
var embed = new EmbedBuilder()
|
||||
.WithAuthor(eab => eab.WithName(GetText("player_queue", curPage + 1, lastPage + 1))
|
||||
.WithAuthor(eab => eab.WithName(GetText("player_queue", curPage + 1, (songs.Length / itemsPerPage) + 1))
|
||||
.WithMusicIcon())
|
||||
.WithDescription(desc)
|
||||
.WithFooter(ef => ef.WithText($"{mp.PrettyVolume} | {songs.Length} " +
|
||||
@ -309,7 +308,8 @@ namespace NadekoBot.Modules.Music
|
||||
|
||||
return embed;
|
||||
};
|
||||
await Context.Channel.SendPaginatedConfirmAsync(_client, page, printAction, lastPage, false).ConfigureAwait(false);
|
||||
await Context.Channel.SendPaginatedConfirmAsync(_client,
|
||||
page, printAction, songs.Length, itemsPerPage, false).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
|
@ -210,7 +210,7 @@ namespace NadekoBot.Modules.Permissions
|
||||
new EmbedBuilder()
|
||||
.WithTitle(GetText("filter_word_list"))
|
||||
.WithDescription(string.Join("\n", fws.Skip(curPage * 10).Take(10)))
|
||||
, fws.Length / 10).ConfigureAwait(false);
|
||||
, fws.Length, 10).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ namespace NadekoBot.Modules.Searches
|
||||
|
||||
return embed.WithDescription(fs);
|
||||
|
||||
}, feeds.Count / 10);
|
||||
}, feeds.Count, 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ namespace NadekoBot.Modules.Utility
|
||||
.WithDescription(string.Join("\n",
|
||||
arr.Skip(curPage * 10).Take(10).Select(x => $"`{x.Key}` => `{x.Value}`")));
|
||||
|
||||
}, arr.Length / 10).ConfigureAwait(false);
|
||||
}, arr.Length, 10).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
@ -7,7 +6,6 @@ using NadekoBot.Common.Collections;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules.Help.Services;
|
||||
using NadekoBot.Core.Services;
|
||||
using NadekoBot.Core.Services.Database.Models;
|
||||
|
||||
namespace NadekoBot.Modules.Utility.Services
|
||||
{
|
||||
|
@ -139,7 +139,7 @@ namespace NadekoBot.Modules.Xp
|
||||
return embed.WithThumbnailUrl(club.ImageUrl);
|
||||
|
||||
return embed;
|
||||
}, club.Users.Count / 10);
|
||||
}, club.Users.Count, 10);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -170,7 +170,7 @@ namespace NadekoBot.Modules.Xp
|
||||
.WithDescription(toShow)
|
||||
.WithOkColor();
|
||||
|
||||
}, bans.Length / 10);
|
||||
}, bans.Length, 10);
|
||||
}
|
||||
|
||||
|
||||
@ -202,7 +202,7 @@ namespace NadekoBot.Modules.Xp
|
||||
.WithDescription(toShow)
|
||||
.WithOkColor();
|
||||
|
||||
}, apps.Length / 10);
|
||||
}, apps.Length, 10);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
|
@ -236,7 +236,7 @@ namespace NadekoBot.Modules.Xp
|
||||
}
|
||||
return embed;
|
||||
}
|
||||
}, addPaginatedFooter: false);
|
||||
}, 1000, 10, addPaginatedFooter: false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
|
@ -55,15 +55,17 @@ namespace NadekoBot.Extensions
|
||||
private static readonly IEmote arrow_left = new Emoji("⬅");
|
||||
private static readonly IEmote arrow_right = new Emoji("➡");
|
||||
|
||||
public static Task SendPaginatedConfirmAsync(this IMessageChannel channel, DiscordSocketClient client, int currentPage, Func<int, EmbedBuilder> pageFunc, int? lastPage = null, bool addPaginatedFooter = true) =>
|
||||
channel.SendPaginatedConfirmAsync(client, currentPage, (x) => Task.FromResult(pageFunc(x)), lastPage, addPaginatedFooter);
|
||||
public static Task SendPaginatedConfirmAsync(this IMessageChannel channel, DiscordSocketClient client, int currentPage, Func<int, EmbedBuilder> pageFunc, int totalElements, int itemsPerPage, bool addPaginatedFooter = true) =>
|
||||
channel.SendPaginatedConfirmAsync(client, currentPage, (x) => Task.FromResult(pageFunc(x)), totalElements, itemsPerPage, addPaginatedFooter);
|
||||
/// <summary>
|
||||
/// danny kamisama
|
||||
/// </summary>
|
||||
public static async Task SendPaginatedConfirmAsync(this IMessageChannel channel, DiscordSocketClient client, int currentPage, Func<int, Task<EmbedBuilder>> pageFunc, int? lastPage = null, bool addPaginatedFooter = true)
|
||||
public static async Task SendPaginatedConfirmAsync(this IMessageChannel channel, DiscordSocketClient client, int currentPage, Func<int, Task<EmbedBuilder>> pageFunc, int totalElements, int itemsPerPage, bool addPaginatedFooter = true)
|
||||
{
|
||||
var embed = await pageFunc(currentPage).ConfigureAwait(false);
|
||||
|
||||
var lastPage = (totalElements - 1) / itemsPerPage;
|
||||
|
||||
if (addPaginatedFooter)
|
||||
embed.AddPaginatedFooter(currentPage, lastPage);
|
||||
|
||||
@ -93,7 +95,7 @@ namespace NadekoBot.Extensions
|
||||
}
|
||||
else if (r.Emote.Name == arrow_right.Name)
|
||||
{
|
||||
if (lastPage == null || lastPage > currentPage)
|
||||
if (lastPage > currentPage)
|
||||
{
|
||||
var toSend = await pageFunc(++currentPage).ConfigureAwait(false);
|
||||
if (addPaginatedFooter)
|
||||
|
Loading…
Reference in New Issue
Block a user