536 lines
11 KiB
JavaScript
536 lines
11 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")
|
|
const discord = require("./discord-bot")
|
|
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]
|
|
}
|
|
|
|
|
|
process.emit("MUSIC_UPDATE_STATE")
|
|
|
|
}
|
|
|
|
|
|
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 {
|
|
|
|
if(!client) {
|
|
|
|
client = discord.getClient()
|
|
}
|
|
|
|
let player = client.manager.players.get("137291455336022018")
|
|
|
|
if(player) {
|
|
|
|
if(player.playing) {
|
|
player.pause(true)
|
|
} else {
|
|
|
|
player.pause(false)
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
process.emit("MUSIC_UPDATE_STATE")
|
|
|
|
}
|
|
|
|
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.SPECIAL_MJ = async function (client) {
|
|
|
|
if(!client) {
|
|
|
|
client = discord.getClient()
|
|
}
|
|
|
|
let player = client.manager.players.get("137291455336022018")
|
|
|
|
|
|
if(!player) {
|
|
|
|
player = client.manager.create({
|
|
guild: "137291455336022018",
|
|
voiceChannel: "664355734288465920",
|
|
textChannel: "664355637685256203",
|
|
});
|
|
|
|
|
|
player.connect();
|
|
}
|
|
|
|
|
|
const songs = await client.manager.search("Earth MJ")
|
|
const songs2 = await client.manager.search("They don't care About Us")
|
|
|
|
player.play(songs.tracks[0])
|
|
|
|
list.add(songs2.tracks[0])
|
|
|
|
|
|
}
|
|
|
|
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 {
|
|
|
|
if(!client) {
|
|
|
|
client = discord.getClient()
|
|
}
|
|
|
|
let player = client.manager.players.get("137291455336022018")
|
|
|
|
if(list.haveSongs()) {
|
|
player.stop()
|
|
}
|
|
|
|
|
|
}
|
|
|
|
process.emit("MUSIC_UPDATE_STATE")
|
|
}
|
|
|
|
module.exports.seek = function (data) {
|
|
|
|
|
|
|
|
client = discord.getClient()
|
|
|
|
|
|
let player = client.manager.players.get("137291455336022018")
|
|
|
|
if(player) {
|
|
|
|
player.seek(data)
|
|
|
|
}
|
|
|
|
|
|
process.emit("MUSIC_UPDATE_STATE")
|
|
|
|
|
|
|
|
}
|
|
|
|
module.exports.setVol = function (data) {
|
|
|
|
|
|
|
|
client = discord.getClient()
|
|
|
|
|
|
let player = client.manager.players.get("137291455336022018")
|
|
|
|
if(player) {
|
|
|
|
player.setVolume(data)
|
|
|
|
}
|
|
|
|
|
|
process.emit("MUSIC_UPDATE_STATE")
|
|
|
|
|
|
|
|
}
|
|
|
|
module.exports.loop = function (client) {
|
|
|
|
|
|
if(!client) {
|
|
|
|
client = discord.getClient()
|
|
}
|
|
|
|
let player = client.manager.players.get("137291455336022018")
|
|
|
|
if(player) {
|
|
|
|
if(player.queueRepeat == true) {
|
|
player.setQueueRepeat(false)
|
|
} else {
|
|
|
|
player.setQueueRepeat(true)
|
|
}
|
|
|
|
}
|
|
|
|
process.emit("MUSIC_UPDATE_STATE")
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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]})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if(!client) {
|
|
|
|
client = discord.getClient()
|
|
}
|
|
|
|
let player = client.manager.players.get("137291455336022018")
|
|
|
|
if(list.havePreviousSongs()){
|
|
list.__next_add(player.queue.current)
|
|
player.play(list.previous())
|
|
}
|
|
|
|
|
|
}
|
|
process.emit("MUSIC_UPDATE_STATE")
|
|
}
|
|
|
|
const clog = new LogType("Actualisation")
|
|
|
|
module.exports.updateMusicState = function (client, action) {
|
|
|
|
if(!client) {
|
|
|
|
client = discord.getClient()
|
|
}
|
|
|
|
let player = client.manager.players.get("137291455336022018")
|
|
var currentTitle = "null"
|
|
|
|
const data = {
|
|
"playing": 0,
|
|
"current":null,
|
|
"isOnline": false,
|
|
"queue": null,
|
|
"loop": false,
|
|
"durationNow": null,
|
|
"durationAll": null,
|
|
"volume": null
|
|
}
|
|
|
|
if(player) {
|
|
|
|
data["current"] = player.queue.current
|
|
|
|
if(player.queueRepeat == true) {
|
|
|
|
data["loop"] = true
|
|
}
|
|
|
|
data["volume"] = player.volume * 10
|
|
|
|
|
|
if(player.queue.current) {
|
|
data["durationNow"] = player.position
|
|
data["durationAll"] = player.queue.current.duration
|
|
currentTitle = player.queue.current.title
|
|
}
|
|
|
|
|
|
if(player.playing == true && player.paused == false) {
|
|
|
|
data["playing"] = 1
|
|
} else {
|
|
data["playing"] = 0
|
|
|
|
}
|
|
|
|
data["queue"] = list.getList();
|
|
data["isOnline"] = true
|
|
|
|
}
|
|
|
|
|
|
if(action == "end") {
|
|
|
|
data["current"] = null;
|
|
data["isOnline"] = false
|
|
}
|
|
|
|
clog.log("Actualisation de tous les clients - Titre : " + currentTitle)
|
|
return data
|
|
|
|
|
|
}
|
|
|
|
// FINI
|
|
|
|
module.exports.leave = function (client, interaction) {
|
|
|
|
|
|
var player = null
|
|
|
|
if(interaction) {
|
|
|
|
player = client.manager.players.get(interaction.guild.id)
|
|
} else {
|
|
|
|
client = discord.getClient()
|
|
player = client.manager.players.get("137291455336022018")
|
|
|
|
}
|
|
|
|
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 !**")
|
|
}
|
|
|
|
|
|
}
|
|
|
|
process.emit("MUSIC_UPDATE_STATE")
|
|
|
|
|
|
}
|
|
|
|
|
|
// FINI
|
|
|
|
async function checkPlaylist (song_name) {
|
|
|
|
try {
|
|
|
|
return await ytfps(song_name)
|
|
|
|
} catch(err) {
|
|
|
|
return false
|
|
}
|
|
|
|
}
|
|
|