aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTiago Grosso <[email protected]>2024-08-23 21:18:08 +0100
committerTiago Grosso <[email protected]>2024-08-23 21:22:34 +0100
commit6e39c8d09ed8f7460f54fb766efddd507f368523 (patch)
tree46d0c8c4eb3a2aee1bdcef18fec6285db732801a /src
parent1e17b94321744ffbe4a6176a900286a834c952d1 (diff)
downloadmuse-6e39c8d09ed8f7460f54fb766efddd507f368523.tar.xz
muse-6e39c8d09ed8f7460f54fb766efddd507f368523.zip
feat: add optional pageSize to /queue command
Diffstat (limited to 'src')
-rw-r--r--src/commands/queue.ts10
-rw-r--r--src/utils/build-embed.ts10
2 files changed, 13 insertions, 7 deletions
diff --git a/src/commands/queue.ts b/src/commands/queue.ts
index 5196ca9..dcc674a 100644
--- a/src/commands/queue.ts
+++ b/src/commands/queue.ts
@@ -14,6 +14,10 @@ export default class implements Command {
.addIntegerOption(option => option
.setName('page')
.setDescription('page of queue to show [default: 1]')
+ .setRequired(false))
+ .addIntegerOption(option => option
+ .setName('pageSize')
+ .setDescription('how many items to display per page [default: 10]')
.setRequired(false));
private readonly playerManager: PlayerManager;
@@ -25,7 +29,11 @@ export default class implements Command {
public async execute(interaction: ChatInputCommandInteraction) {
const player = this.playerManager.get(interaction.guild!.id);
- const embed = buildQueueEmbed(player, interaction.options.getInteger('page') ?? 1);
+ const embed = buildQueueEmbed(
+ player,
+ interaction.options.getInteger('page') ?? 1,
+ interaction.options.getInteger('pageSize') ?? 10,
+ );
await interaction.reply({embeds: [embed]});
}
diff --git a/src/utils/build-embed.ts b/src/utils/build-embed.ts
index b8e725c..23db0b9 100644
--- a/src/utils/build-embed.ts
+++ b/src/utils/build-embed.ts
@@ -5,8 +5,6 @@ import getProgressBar from './get-progress-bar.js';
import {prettyTime} from './time.js';
import {truncate} from './string.js';
-const PAGE_SIZE = 10;
-
const getMaxSongTitleLength = (title: string) => {
// eslint-disable-next-line no-control-regex
const nonASCII = /[^\x00-\x7F]+/;
@@ -77,7 +75,7 @@ export const buildPlayingMessageEmbed = (player: Player): EmbedBuilder => {
return message;
};
-export const buildQueueEmbed = (player: Player, page: number): EmbedBuilder => {
+export const buildQueueEmbed = (player: Player, page: number, pageSize: number): EmbedBuilder => {
const currentlyPlaying = player.getCurrent();
if (!currentlyPlaying) {
@@ -85,14 +83,14 @@ export const buildQueueEmbed = (player: Player, page: number): EmbedBuilder => {
}
const queueSize = player.queueSize();
- const maxQueuePage = Math.ceil((queueSize + 1) / PAGE_SIZE);
+ const maxQueuePage = Math.ceil((queueSize + 1) / pageSize);
if (page > maxQueuePage) {
throw new Error('the queue isn\'t that big');
}
- const queuePageBegin = (page - 1) * PAGE_SIZE;
- const queuePageEnd = queuePageBegin + PAGE_SIZE;
+ const queuePageBegin = (page - 1) * pageSize;
+ const queuePageEnd = queuePageBegin + pageSize;
const queuedSongs = player
.getQueue()
.slice(queuePageBegin, queuePageEnd)