49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import { Interaction } from 'discord.js';
|
|
|
|
import { configs } from "../configs"
|
|
import { subscriptions } from "../index";
|
|
import { MusicSubscription } from '../subscription';
|
|
import { formatCallbackData, getAllowedTextChannel } from "../utils";
|
|
|
|
|
|
export async function np(interaction: Interaction) {
|
|
await interaction.reply(nowPlayingResponse(interaction));
|
|
}
|
|
|
|
function formatQueue(interaction: Interaction) {
|
|
let formattedText = "";
|
|
const subscription = subscriptions.get(interaction.guildId);
|
|
|
|
if(subscription.queue.length === 0) {
|
|
return "Nothing is currently in the queue.";
|
|
} else {
|
|
formattedText = `Now playing: [**${subscription.nowPlaying.title}**](${subscription.nowPlaying.url}), added by ${subscription.nowPlaying.addedBy}`
|
|
}
|
|
|
|
formattedText = formattedText.concat(`\nUp next:`);
|
|
|
|
subscription.queue.forEach((track) => {
|
|
formattedText = formattedText.concat(`\n- **${track.title}**, added by ${track.addedBy}`)
|
|
});
|
|
|
|
return formattedText;
|
|
}
|
|
|
|
function nowPlayingResponse(interaction: Interaction) {
|
|
return formatCallbackData(formatQueue(interaction), "In the queue");
|
|
}
|
|
|
|
function nowPlayingMessage(track: Track) {
|
|
return formatCallbackData(`Now playing: [**${track.title}**](${track.url}), added by ${track.addedBy}`);
|
|
}
|
|
|
|
export async function nowPlayingCallback(subscription: MusicSubscription) {
|
|
const channel = await getAllowedTextChannel(subscription);
|
|
await channel.send(nowPlayingMessage(subscription.nowPlaying));
|
|
}
|
|
|
|
export const npCommand = {
|
|
name: "np",
|
|
description: "Shows the currently-playing song along with the next five songs in the queue"
|
|
};
|