const { SlashCommandBuilder } = require("@discordjs/builders") const { MessageEmbed } = require("discord.js") const { QueryType } = require("discord-player") module.exports = { name: 'play', description: 'LOADS SONGS FROM YOUTUBE', type: 'CHAT_INPUT', required: true, options:[ { name: 'song', description: 'LOADS SONGS FROM YOUTUBE', type: 3, choices:[ { name: 'url', description: 'THE SONG`s URL' }, ], }, { name: 'playlist', description: 'LOADS A PLAYLIST OF SONGS FROM A URL', type: 3, choices:[ { name: 'url', description: 'THE PLAYLIST`s URL' }, ], }, { name: 'search', description: 'SEARCH FOR SONG BASED ON PROVIDED KEYWORDS', type: 3, choices:[ { name: 'searchterms', description: 'THE SEARCH KEYWORDS' }, ], } ], run: async ({ client, interaction }) => { if (!interaction.member.voice.channel) return interaction.editReply("You need to be in a VC to use this command") const queue = await client.player.createQueue(interaction.guild) if (!queue.connection) await queue.connect(interaction.member.voice.channel) let embed = new MessageEmbed() if (interaction.options.getSubcommand() === "song") { let url = interaction.options.getString("url") const result = await client.player.search(url, { requestedBy: interaction.user, searchEngine: QueryType.YOUTUBE_VIDEO }) if (result.tracks.length === 0) return interaction.editReply("No results") const song = result.tracks[0] await queue.addTrack(song) embed .setDescription(`**[${song.title}](${song.url})** has been added to the Queue`) .setThumbnail(song.thumbnail) .setFooter({ text: `Duration: ${song.duration}`}) } else if (interaction.options.getSubcommand() === "playlist") { let url = interaction.options.getString("url") const result = await client.player.search(url, { requestedBy: interaction.user, searchEngine: QueryType.YOUTUBE_PLAYLIST }) if (result.tracks.length === 0) return interaction.editReply("No results") const playlist = result.playlist await queue.addTracks(result.tracks) embed .setDescription(`**${result.tracks.length} songs from [${playlist.title}](${playlist.url})** have been added to the Queue`) .setThumbnail(playlist.thumbnail) } else if (interaction.options.getSubcommand() === "search") { let url = interaction.options.getString("searchterms") const result = await client.player.search(url, { requestedBy: interaction.user, searchEngine: QueryType.AUTO }) if (result.tracks.length === 0) return interaction.editReply("No results") const song = result.tracks[0] await queue.addTrack(song) embed .setDescription(`**[${song.title}](${song.url})** has been added to the Queue`) .setThumbnail(song.thumbnail) .setFooter({ text: `Duration: ${song.duration}`}) } if (!queue.playing) await queue.play() await interaction.editReply({ embeds: [embed] }) }, }