web/src/modules/sub-player.js

306 lines
7.3 KiB
JavaScript

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
}
}