mirror of
https://github.com/BluemediaDev/muse.git
synced 2025-06-08 05:43:14 +02:00
Add pagination to the output of the favorites list
command (#954)
Co-authored-by: Max Isom <hi@maxisom.me>
This commit is contained in:
parent
2eb2b6d045
commit
9c6d2a7acf
5 changed files with 192 additions and 36 deletions
|
@ -1,10 +1,11 @@
|
|||
import {SlashCommandBuilder} from '@discordjs/builders';
|
||||
import {AutocompleteInteraction, ChatInputCommandInteraction, EmbedBuilder} from 'discord.js';
|
||||
import {APIEmbedField, AutocompleteInteraction, ChatInputCommandInteraction} from 'discord.js';
|
||||
import {inject, injectable} from 'inversify';
|
||||
import Command from '.';
|
||||
import AddQueryToQueue from '../services/add-query-to-queue.js';
|
||||
import {TYPES} from '../types.js';
|
||||
import {prisma} from '../utils/db.js';
|
||||
import {Pagination} from 'pagination.djs';
|
||||
|
||||
@injectable()
|
||||
export default class implements Command {
|
||||
|
@ -54,7 +55,8 @@ export default class implements Command {
|
|||
),
|
||||
);
|
||||
|
||||
constructor(@inject(TYPES.Services.AddQueryToQueue) private readonly addQueryToQueue: AddQueryToQueue) {}
|
||||
constructor(@inject(TYPES.Services.AddQueryToQueue) private readonly addQueryToQueue: AddQueryToQueue) {
|
||||
}
|
||||
|
||||
requiresVC = (interaction: ChatInputCommandInteraction) => interaction.options.getSubcommand() === 'use';
|
||||
|
||||
|
@ -135,18 +137,22 @@ export default class implements Command {
|
|||
return;
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder().setTitle('Favorites');
|
||||
|
||||
let description = '';
|
||||
for (const favorite of favorites) {
|
||||
description += `**${favorite.name}**: ${favorite.query} (<@${favorite.authorId}>)\n`;
|
||||
const fields = new Array<APIEmbedField>(favorites.length);
|
||||
for (let index = 0; index < favorites.length; index++) {
|
||||
const favorite = favorites[index];
|
||||
fields[index] = {
|
||||
inline: false,
|
||||
name: favorite.name,
|
||||
value: `${favorite.query} (<@${favorite.authorId}>)`,
|
||||
};
|
||||
}
|
||||
|
||||
embed.setDescription(description);
|
||||
|
||||
await interaction.reply({
|
||||
embeds: [embed],
|
||||
});
|
||||
await new Pagination(
|
||||
interaction as ChatInputCommandInteraction<'cached'>,
|
||||
{ephemeral: true, limit: 25})
|
||||
.setFields(fields)
|
||||
.paginateFields(true)
|
||||
.render();
|
||||
}
|
||||
|
||||
private async create(interaction: ChatInputCommandInteraction) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue