mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-03-15 05:41:51 +00:00
paginated user cases
Signed-off-by: GitHub <noreply@github.com>
This commit is contained in:
parent
047ab872df
commit
ae651c8a70
1 changed files with 47 additions and 36 deletions
|
@ -5,6 +5,7 @@ import { sendErrorMessage } from "../../../pluginUtils";
|
|||
import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
|
||||
import { UnknownUser, chunkArray, emptyEmbedValue, renderUserUsername, resolveUser, trimLines } from "../../../utils";
|
||||
import { asyncMap } from "../../../utils/async";
|
||||
import { createPaginatedMessage } from "../../../utils/createPaginatedMessage.js";
|
||||
import { getChunkedEmbedFields } from "../../../utils/getChunkedEmbedFields";
|
||||
import { getGuildPrefix } from "../../../utils/getGuildPrefix";
|
||||
import { modActionsCmd } from "../types";
|
||||
|
@ -21,6 +22,8 @@ const opts = {
|
|||
unbans: ct.switchOption({ def: false, shortcut: "ub" }),
|
||||
};
|
||||
|
||||
const casesPerPage = 10;
|
||||
|
||||
export const CasesUserCmd = modActionsCmd({
|
||||
trigger: ["cases", "modlogs"],
|
||||
permission: "can_view",
|
||||
|
@ -90,49 +93,57 @@ export const CasesUserCmd = modActionsCmd({
|
|||
} else {
|
||||
// Compact view (= regular message with a preview of each case)
|
||||
const casesPlugin = pluginData.getPlugin(CasesPlugin);
|
||||
const lines = await asyncMap(casesToDisplay, (c) => casesPlugin.getCaseSummary(c, true, msg.author.id));
|
||||
|
||||
const totalPages = Math.max(Math.ceil(cases.length / casesPerPage), 1);
|
||||
const prefix = getGuildPrefix(pluginData);
|
||||
const linesPerChunk = 10;
|
||||
const lineChunks = chunkArray(lines, linesPerChunk);
|
||||
|
||||
const footerField = {
|
||||
createPaginatedMessage(
|
||||
pluginData.client,
|
||||
msg.channel,
|
||||
totalPages,
|
||||
async (page) => {
|
||||
const chunkedCases = chunkArray(cases, casesPerPage)[page - 1];
|
||||
const lines = await asyncMap(chunkedCases, (c) => casesPlugin.getCaseSummary(c, true, msg.author.id));
|
||||
|
||||
const isLastPage = page === totalPages;
|
||||
const firstCaseNum = (page - 1) * casesPerPage + 1;
|
||||
const lastCaseNum = page * casesPerPage;
|
||||
const title =
|
||||
totalPages === 1
|
||||
? `Cases for ${userName} (${lines.length} total)`
|
||||
: `Most recent cases ${firstCaseNum}-${lastCaseNum} of ${cases.length} for ${userName}`;
|
||||
|
||||
const embed = {
|
||||
author: {
|
||||
name: title,
|
||||
icon_url: user instanceof User ? user.displayAvatarURL() : undefined,
|
||||
},
|
||||
fields: [
|
||||
...getChunkedEmbedFields(emptyEmbedValue, lines.join("\n")),
|
||||
{
|
||||
name: emptyEmbedValue,
|
||||
value: trimLines(`
|
||||
Use \`${prefix}case <num>\` to see more information about an individual case
|
||||
`),
|
||||
};
|
||||
|
||||
for (const [i, linesInChunk] of lineChunks.entries()) {
|
||||
const isLastChunk = i === lineChunks.length - 1;
|
||||
|
||||
if (isLastChunk && !args.hidden && hiddenCases.length) {
|
||||
if (hiddenCases.length === 1) {
|
||||
linesInChunk.push(`*+${hiddenCases.length} hidden case, use "-hidden" to show it*`);
|
||||
} else {
|
||||
linesInChunk.push(`*+${hiddenCases.length} hidden cases, use "-hidden" to show them*`);
|
||||
}
|
||||
}
|
||||
|
||||
const chunkStart = i * linesPerChunk + 1;
|
||||
const chunkEnd = Math.min((i + 1) * linesPerChunk, lines.length);
|
||||
|
||||
const embed = {
|
||||
author: {
|
||||
name:
|
||||
lineChunks.length === 1
|
||||
? `Cases for ${userName} (${lines.length} total)`
|
||||
: `Cases ${chunkStart}–${chunkEnd} of ${lines.length} for ${userName}`,
|
||||
icon_url: user instanceof User ? user.displayAvatarURL() : undefined,
|
||||
},
|
||||
fields: [
|
||||
...getChunkedEmbedFields(emptyEmbedValue, linesInChunk.join("\n")),
|
||||
...(isLastChunk ? [footerField] : []),
|
||||
],
|
||||
} satisfies APIEmbed;
|
||||
|
||||
msg.channel.send({ embeds: [embed] });
|
||||
}
|
||||
if (isLastPage && !args.hidden && hiddenCases.length)
|
||||
embed.fields.push({
|
||||
name: emptyEmbedValue,
|
||||
value:
|
||||
hiddenCases.length === 1
|
||||
? `*+${hiddenCases.length} hidden case, use "-hidden" to show it*`
|
||||
: `*+${hiddenCases.length} hidden cases, use "-hidden" to show them*`,
|
||||
});
|
||||
|
||||
return { embeds: [embed] };
|
||||
},
|
||||
{
|
||||
limitToUserId: msg.author.id,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Add table
Reference in a new issue