const { SlashCommandBuilder, EmbedBuilder, DefaultWebSocketManagerOptions } = require("discord.js"); const { __glob } = require("../modules/global-variables"); const { LogType } = require("./sub-log"); const { List } = require("./sub-list") var ytfps = require("ytfps") const list = new List() module.exports.play = async function (client, interaction) { if(interaction) { let player = client.manager.players.get(interaction.guild.id) const song_name = interaction.options.getString("nom_ou_lien") if(!player) { player = client.manager.create({ guild: interaction.guild.id, voiceChannel: interaction.member.voice.channel.id, textChannel: interaction.channel.id, }); player.connect(); } // CHECK OF PLAYLIST var playlist = await checkPlaylist(song_name) if(playlist) { list.playlistAdd(playlist, interaction) } else { const songs = await client.manager.search(song_name) if(!player.playing) { player.play(songs.tracks[0]) const embed = await new EmbedBuilder() .setColor(0x15e6ed) .setTitle('**Lecture de : **' + songs.tracks[0].title) .setDescription('**Demandé par **' + interaction.member.user.username) .addFields({name: "Auteur", value: songs.tracks[0].author}, {name: "URL", value:songs.tracks[0].uri}) .setThumbnail(songs.tracks[0].thumbnail) .setTimestamp(); interaction.reply({embeds: [embed]}) } else { list.add(songs.tracks[0], interaction) } } } else { // [A FINIR POUR WEB] } } module.exports.pause = function (client, interaction) { if(interaction) { let player = client.manager.players.get(interaction.guild.id) if(player) { if(player.playing) { const embed = new EmbedBuilder() .setColor(0x03ff2d) .setTitle('Pause !') .setDescription("**Ok, une entracte est demandée par " + interaction.member.user.username + "**") .setTimestamp(); interaction.reply({embeds: [embed]}) player.pause(true) } else { const embed = new EmbedBuilder() .setColor(0x03ff2d) .setTitle('C\'est reparti !') .setDescription("**Ok, Fin de l'entracte, c'est reparti et c'est demandée par " + interaction.member.user.username + "**") .setTimestamp(); interaction.reply({embeds: [embed]}) player.pause(false) } } else { interaction.reply("**Aucune musique n'est actuellement jouée !**") } } else { // [A FINIR POUR WEB] } } module.exports.getState = function(client, interaction) { if(interaction) { let player = client.manager.players.get(interaction.guild.id) if(player) { let embed = new EmbedBuilder() .setColor(0x32a875) .setTitle('Information sur la musique') .addFields({name:"Titre", value: player.queue.current.title}, {name:"Auteur", value: player.queue.current.author}, {name:"URL", value: player.queue.current.uri}) .setTimestamp() .setThumbnail(player.queue.current.thumbnail); interaction.reply({embeds: [embed]}) } else { interaction.reply("**Aucune musique n'est actuellement jouée !**") } } else { // [A FINIR POUR WEB] } } module.exports.skip = function (client, interaction) { if(interaction) { let player = client.manager.players.get(interaction.guild.id) if(player) { if(!list.haveSongs()) { var embed = new EmbedBuilder() .setColor(0xff0303) .setTitle('Erreur : Skip') .setTimestamp(); const song_show = {name: "Aucune chanson n'est dans la queue", value: "Changement impossible !"} embed.addFields(song_show) interaction.reply({embeds: [embed]}) } else { var embed = new EmbedBuilder() .setColor(0x03ff2d) .setTitle('On change de morceau !!!') .setDescription("**Ok, On est reparti avec "+ list.getNextSong().title + " et c'est demandée par " + interaction.member.user.username + "**") .setThumbnail(list.getNextSong().thumbnail) .setTimestamp(); player.stop() interaction.reply({embeds: [embed]}) } } else { interaction.reply("**Aucune musique n'est actuellement jouée !**") } } else { // [A FINIR POUR WEB] } } module.exports.previous = function (client, interaction) { if(interaction) { let player = client.manager.players.get(interaction.guild.id) if(player) { if(!list.havePreviousSongs()){ embed = new EmbedBuilder() .setColor(0xff0303) .setTitle('Erreur : Back') .setTimestamp(); const song_show = {name: "Aucune chanson n'a été joué précédemment !", value: "Changement impossible !"} embed.addFields(song_show) interaction.reply({embeds: [embed]}) } else { list.__next_add(player.queue.current) player.play(list.previous()) embed = new EmbedBuilder() .setColor(0x03ff2d) .setTitle('Retour vers le passé !!!') .setDescription("**Ok, On est reparti avec "+ player.queue.current.title +" et c'est demandée par " + interaction.member.user.username + "**") .setTimestamp(); interaction.reply({embeds: [embed]}) } } } } // FINI module.exports.leave = function (client, interaction) { var player = null if(interaction) { player = client.manager.players.get(interaction.guild.id) } if(player) { player.destroy() if(interaction) { const embed = new EmbedBuilder() .setColor(0xff0000) .setTitle('C\'est tout pour nous !') .setDescription("**Le meilleur groupe du monde est parti ... !**") .setTimestamp(); interaction.reply({embeds: [embed]}) } } else { if(interaction) { interaction.reply("**Aucune musique n'est actuellement jouée !**") } } } // FINI async function checkPlaylist (song_name) { try { return await ytfps(song_name) } catch(err) { return false } }