This commit is contained in:
Raphix
2023-04-11 22:26:27 +02:00
parent 2a62ebc2f6
commit 31ba11951b
6 changed files with 204 additions and 15 deletions

View File

@ -21,7 +21,8 @@ module.exports = {
{name: "/queue <afficher/supprimer>", value: "Permet d'afficher ou de supprimer les titres de la liste de lecture."},
{name: "/state", value: "Donne l'état de la musique"},
{name: "/skip", value: "Passer à la chanson suivante."},
{name: "/back", value: "Revenir à la chanson précédente."})
{name: "/back", value: "Revenir à la chanson précédente."},
{name: "/playlist", value: "Permet d'ajouter à la liste de lecture toute une playlist."})
.setTimestamp()
.setThumbnail("https://static.wikia.nocookie.net/codelyoko/images/9/95/Subdigitals.jpg/revision/latest/scale-to-width-down/180?cb=20120105180510&path-prefix=fr");

View File

@ -60,7 +60,7 @@ module.exports = {
const embed = await new EmbedBuilder()
.setColor(0x15e6ed)
.setTitle('**Lecture de **' + songs.tracks[0].title)
.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})
@ -72,7 +72,7 @@ module.exports = {
interaction.reply({embeds: [embed]})
} catch(error) {
interaction.reply({embeds: [embed]})
console.log(error)
}
@ -84,7 +84,7 @@ module.exports = {
const embed = await new EmbedBuilder()
.setColor(0x15e6ed)
.setTitle('**Ajout dans la liste de lecture **' + songs.tracks[0].title)
.setTitle('**Ajout dans la liste de lecture **: ' + 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})
@ -100,7 +100,7 @@ module.exports = {
interaction.reply({embeds: [embed]})
} catch(error) {
interaction.reply({embeds: [embed]})
console.log(error)
}

129
src/commands/playlist.js Normal file
View File

@ -0,0 +1,129 @@
const { EmbedBuilder } = require("@discordjs/builders");
const { SlashCommandBuilder, Embed } = require("discord.js");
module.exports = {
data:new SlashCommandBuilder()
.setName("playlist")
.setDescription("Permet de lire une playlist de Youtube !")
.addStringOption(option => option.setName("lien").setDescription("Le lien de la playlist !").setRequired(true)),
async execute(client, interaction) {
if(client.dictator == true ) {
if((interaction.member._roles.includes("397725956598530050") == true | interaction.member.user.id == "486943594893017119")) {
makeAction()
} else {
const embed = new EmbedBuilder()
.setColor(0xff0303)
.setTitle('Mode Dictateur')
.setTimestamp();
const song_show = {name: "Le mode dictateur est actif !", value: "Demande au grand roi !"}
embed.addFields(song_show)
interaction.reply({embeds: [embed]})
}
} else {
makeAction();
}
async function makeAction() {
const song_name = interaction.options.getString("lien")
if(!interaction.member.voice.channel) return interaction.reply({content:"Vous devez rejoindre un salon vocal !", ephemeral: true})
let player = client.manager.players.get(interaction.guild.id)
if(!player) {
player = client.manager.create({
guild: interaction.guild.id,
voiceChannel: interaction.member.voice.channel.id,
textChannel: interaction.channel.id,
});
player.connect();
}
var ytfps = require("ytfps")
try {
var playlist = await ytfps(song_name)
const embed = await new EmbedBuilder()
.setColor(0x15e6ed)
.setTitle('**Lecture de la playlist : **' + playlist.title)
.setDescription('**Demandé par **' + interaction.member.user.username)
.addFields({name: "Auteur", value: playlist.author.name},
{name: "URL", value:playlist.url},
{name: "Nombre de videos", value:playlist.video_count + " vidéos"})
.setThumbnail(playlist.thumbnail_url)
.setTimestamp();
try {
await interaction.reply({embeds: [embed]})
} catch(error) {
console.log(error)
}
for(var song of playlist.videos) {
const song_finded = await client.manager.search(song.url)
await client.manager.players.get(interaction.guild.id).queue.add(song_finded.tracks[0])
}
} catch(err) {
const embed = new EmbedBuilder()
.setColor(0xff0303)
.setTitle('Erreur : Playlist !')
.setTimestamp();
const song_show = {name: "Une erreur s'est produite ou la playlist n'existe pas !", value: "Est-tu sur du lien ?"}
embed.addFields(song_show)
interaction.reply({embeds: [embed]})
console.log(err)
};
if(playlist != null) {
if(!player.playing) {
player.play()
}
}
}
}
}

View File

@ -2,7 +2,7 @@ let tryTime = 0;
function startApp() {
const { Client, GatewayIntentBits, Collection } = require("discord.js")
const { Client, GatewayIntentBits, Collection } = require("discord.js")
const { REST, Routes } = require("discord.js")
const fs = require("node:fs")
const config = require("./config.json")
@ -136,7 +136,7 @@ tryTime = 0
}
function handleFatalError(error) {
function handleFatalError(error) {
console.error('Erreur fatale :', error);
console.log('Redémarrage en cours...');
@ -146,9 +146,10 @@ tryTime = 0
}
tryTime += 1;
client = null
startApp();
}
}
process.on('uncaughtException', handleFatalError);
process.on('uncaughtException', handleFatalError);
startApp();
startApp();