mirror of
https://github.com/aydenjahola/discord-multipurpose-bot.git
synced 2025-09-21 06:41:35 +01:00
Some checks are pending
Docker / build (push) Waiting to run
* add simple music functionality * update workflow * update Dockerfile * update Dockerfile * update Dockerfile * update Dockerfile * add few more music commands * add lyrics command * update lyrics command * add loop, and add categories to all commands * change discord status * seperate distube and change startup console theme * Update README * UPDATE LICENSE file * fix docker compose image, add better error handling for distube and update tagging workflow * switch to node-alpine image for docker * switch to node-alpine image for docker * update ascii * music commands imporvements, implement live lyrics, some guards and bot leaving on empty * use ffmpeg package rather than ffmpeg-static
51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
const { SlashCommandBuilder } = require("discord.js");
|
||
const { requireVC } = require("../../utils/musicGuards");
|
||
|
||
module.exports = {
|
||
data: new SlashCommandBuilder()
|
||
.setName("stop")
|
||
.setDescription(
|
||
"Stops playback, clears the queue, and leaves the voice channel."
|
||
),
|
||
category: "Music",
|
||
|
||
async execute(interaction, client) {
|
||
try {
|
||
await interaction.deferReply();
|
||
|
||
const vc = requireVC(interaction);
|
||
const queue = client.distube.getQueue(interaction.guildId);
|
||
|
||
if (!queue) {
|
||
return interaction.followUp({
|
||
content: "ℹ️ Nothing is playing.",
|
||
ephemeral: true,
|
||
});
|
||
}
|
||
|
||
// Clear the queue and stop playback
|
||
// In DisTube v5, `queue.stop()` stops playback and clears upcoming songs.
|
||
queue.stop();
|
||
|
||
// Leave the voice channel via manager (recommended)
|
||
client.distube.voices.leave(interaction.guildId);
|
||
|
||
// If you use live lyrics, clean up the thread
|
||
try {
|
||
const live = require("../../utils/liveLyricsManager");
|
||
await live.stop(interaction.guildId, { deleteThread: true });
|
||
} catch {}
|
||
|
||
return interaction.followUp(
|
||
"⏹️ Stopped playback, cleared the queue, and left the voice channel."
|
||
);
|
||
} catch (e) {
|
||
console.error("stop command failed:", e);
|
||
const msg = e?.message || "❌ Failed to stop playback.";
|
||
if (interaction.deferred || interaction.replied) {
|
||
return interaction.followUp({ content: msg, ephemeral: true });
|
||
}
|
||
return interaction.reply({ content: msg, ephemeral: true });
|
||
}
|
||
},
|
||
};
|