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