306 lines
7.3 KiB
JavaScript
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
|
|
}
|
|
|
|
}
|
|
|