add more button and reorganize the button

This commit is contained in:
Amane Serenetia 2024-12-10 18:10:44 +07:00
parent 2f956b91b1
commit 09f8822778

View File

@ -20,16 +20,53 @@ module.exports = async (client, player, track) => {
const previous = await player.queue.shiftPrevious();
const row = (player) =>
const row1 = (player) =>
new ActionRowBuilder().addComponents(
new ButtonBuilder().setCustomId("previous").setEmoji("⏪").setStyle(ButtonStyle.Secondary).setDisabled(!previous),
new ButtonBuilder()
.setCustomId("volumedown")
.setEmoji("🔉")
.setStyle(ButtonStyle.Secondary),
new ButtonBuilder()
.setCustomId("previous")
.setEmoji("⏮️")
.setStyle(ButtonStyle.Secondary)
.setDisabled(!previous),
new ButtonBuilder()
.setCustomId("pause")
.setEmoji(player.paused ? "▶️" : "⏸️")
.setStyle(player.paused ? ButtonStyle.Success : ButtonStyle.Secondary),
new ButtonBuilder().setCustomId("stop").setEmoji("⏹️").setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId("skip").setEmoji("⏩").setStyle(ButtonStyle.Secondary),
new ButtonBuilder().setCustomId("shuffle").setEmoji("🔀").setStyle(ButtonStyle.Secondary)
new ButtonBuilder()
.setCustomId("skip")
.setEmoji("⏭️")
.setStyle(ButtonStyle.Secondary),
new ButtonBuilder()
.setCustomId("volumeup")
.setEmoji("🔊")
.setStyle(ButtonStyle.Secondary)
);
const row2 = (player) =>
new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setCustomId("autoplay")
.setEmoji("♾️")
.setStyle(player.get("autoplay") ? ButtonStyle.Success : ButtonStyle.Secondary),
new ButtonBuilder()
.setCustomId("loop")
.setEmoji("🔁")
.setStyle(player.repeatMode === "off" ? ButtonStyle.Secondary : ButtonStyle.Success),
new ButtonBuilder()
.setCustomId("stop")
.setEmoji("⏹️")
.setStyle(ButtonStyle.Danger),
new ButtonBuilder()
.setCustomId("shuffle")
.setEmoji("🔀")
.setStyle(ButtonStyle.Secondary),
new ButtonBuilder()
.setCustomId("queue")
.setEmoji("📑")
.setStyle(ButtonStyle.Secondary)
);
const msg = await channel.safeSend({
@ -51,7 +88,7 @@ module.exports = async (client, player, track) => {
{ name: "Author", value: track.info.author || "Unknown", inline: true }
),
],
components: [row(player)],
components: [row1(player), row2(player)],
});
if (msg) player.set("message", msg);
@ -83,7 +120,7 @@ module.exports = async (client, player, track) => {
player.pause();
description = "Track paused";
}
await msg.edit({ components: [row(player)] });
await msg.edit({ components: [row1(player), row2(player)] });
break;
case "stop":
@ -104,7 +141,71 @@ module.exports = async (client, player, track) => {
description = "The queue has been shuffled!";
}
break;
case "volumeup":
const newVolUp = Math.min(player.volume + 10, 100);
await player.setVolume(newVolUp);
description = `Volume increased to \`${newVolUp}%\``;
break;
case "volumedown":
const newVolDown = Math.max(player.volume - 10, 0);
await player.setVolume(newVolDown);
description = `Volume decreased to \`${newVolDown}%\``;
break;
case "loop":
const currentMode = player.repeatMode;
if (currentMode === "off") {
player.setRepeatMode("track");
description = "Loop mode set to `track`";
} else if (currentMode === "track") {
player.setRepeatMode("queue");
description = "Loop mode set to `queue`";
} else {
player.setRepeatMode("off");
description = "Loop mode `disabled`";
}
await msg.edit({ components: [row1(player), row2(player)] });
break;
case "autoplay":
const autoplay = !player.get("autoplay");
player.set("autoplay", autoplay);
description = autoplay ? "Autoplay activated!" : "Autoplay deactivated";
await msg.edit({ components: [row1(player), row2(player)] });
break;
case "queue":
const queue = player.queue;
const tracks = queue.tracks.slice(0, 10); // Get first 10 tracks
const queueEmbed = new EmbedBuilder()
.setColor(EMBED_COLORS.BOT_EMBED)
.setAuthor({ name: "Music Queue" })
.setDescription(
tracks.length > 0
? tracks
.map((track, i) => `${i + 1}. [${track.info.title}](${track.info.uri})`)
.join("\n")
: "No tracks in queue"
)
.addFields({
name: "Now Playing",
value: `[${queue.current.info.title}](${queue.current.info.uri})`,
});
if (tracks.length > 0) {
queueEmbed.setFooter({
text: `${queue.tracks.length} track(s) in queue`,
});
}
description = "Queue sent as new message";
await channel.send({ embeds: [queueEmbed] });
break;
}
await int.followUp({
embeds: [new EmbedBuilder().setDescription(description).setColor(EMBED_COLORS.BOT_EMBED)],
});