99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| const { Events, EmbedBuilder, ButtonBuilder, ActionRowBuilder } = require('discord.js')
 | |
| const { useQueue } = require("discord-player")
 | |
| 
 | |
| const dance = async function (bot_id, channel, embed, components) {
 | |
| 	let messages = await channel.messages.fetch()
 | |
| 	let botMessage = messages.find(msg => msg.author.id === bot_id)
 | |
| 	if (!botMessage || (!components && botMessage.components.length > 0)) {
 | |
| 		await channel.bulkDelete(messages)
 | |
| 		return await channel.send({ embeds: [embed] })
 | |
| 	} else {
 | |
| 		await botMessage.edit({ embeds: [embed], components })
 | |
| 	}
 | |
| }
 | |
| 
 | |
| const getUptime = function (uptime) {
 | |
| 	let days = Math.floor(uptime / 86400000)
 | |
| 	let hours = Math.floor(uptime / 3600000) % 24
 | |
| 	let minutes = Math.floor(uptime / 60000) % 60
 | |
| 	let seconds = Math.floor(uptime / 1000) % 60
 | |
| 	return `${days}J, ${hours}H, ${minutes}M et ${seconds}S`
 | |
| }
 | |
| 
 | |
| module.exports = {
 | |
| 	name: Events.ClientReady,
 | |
| 	once: true,
 | |
| 	execute(client) {
 | |
| 		console.log(`\u001b[1;35m Ready! Logged in as ${client.user.tag}`)
 | |
| 		setInterval(async () => {
 | |
| 			let guild = client.guilds.cache.get('1086577543651524699')
 | |
| 			let channel = guild.channels.cache.get('1099542278764245096')
 | |
| 			
 | |
| 			let queue = useQueue(guild.id)
 | |
| 			if (!queue) return await dance(client.user.id, channel, new EmbedBuilder().setColor('#ffc370').setTitle('Aucune session d\'écoute en cours !').setFooter({ text: `Uptime: ${getUptime(client.uptime)}` }))
 | |
| 			let track = queue.currentTrack
 | |
| 			if (!track) return await dance(client.user.id, channel, new EmbedBuilder().setColor('#ffc370').setTitle('Aucune musique en cours de lecture !').setFooter({ text: `Uptime: ${getUptime(client.uptime)}` }))
 | |
| 
 | |
| 			let embed = new EmbedBuilder()
 | |
| 				.setColor('#ffc370')
 | |
| 				.setTitle(track.title)
 | |
| 				.setAuthor({ name: track.author })
 | |
| 				.setURL(track.url)
 | |
| 				.setImage(track.thumbnail)
 | |
| 				.addFields(
 | |
| 					{ name: 'Durée', value: track.duration, inline: true },
 | |
| 					{ name: 'Source', value: track.source === 'youtube' ? 'Youtube' : track.source === 'spotify' ? 'Spotify' : 'Inconnu', inline: true },
 | |
| 					{ name: 'Volume', value: `${queue.node.volume}%`, inline: true },
 | |
| 					{ name: queue.node.isPaused() ? 'Progression (en pause)' : 'Progression', value: queue.node.createProgressBar() },
 | |
| 					{ name: 'Loop', value: queue.repeatMode ? queue.repeatMode === 2 ? "File d'Attente" : "Titre" : "Off", inline: true },
 | |
| 					{ name: 'Autoplay', value: queue.autoplay ? "On" : "Off", inline: true }
 | |
| 				)
 | |
| 				.setDescription(`**Musique suivante :** ${queue.tracks[0] ? queue.tracks[0].title : 'Aucune'}`)
 | |
| 				.setFooter({ text: `Uptime: ${getUptime(client.uptime)} / Demandé par ${track.requestedBy.tag}` })
 | |
| 			
 | |
| 			let components = [
 | |
| 				new ActionRowBuilder().addComponents(
 | |
| 					new ButtonBuilder()
 | |
| 						.setLabel(queue.node.isPaused() ? '▶️' : '⏸️')
 | |
| 						.setStyle(2)
 | |
| 						.setCustomId(queue.node.isPaused() ? 'resume' : 'pause'),
 | |
| 					new ButtonBuilder()
 | |
| 						.setLabel('⏹️')
 | |
| 						.setStyle(2)
 | |
| 						.setCustomId('stop'),
 | |
| 					new ButtonBuilder()
 | |
| 						.setLabel('⏭️')
 | |
| 						.setStyle(2)
 | |
| 						.setCustomId('skip')
 | |
| 						.setDisabled(queue.tracks.length !== 0),
 | |
| 					new ButtonBuilder()	
 | |
| 						.setLabel('🔉')
 | |
| 						.setStyle(2)
 | |
| 						.setCustomId('volume_down')
 | |
| 						.setDisabled(queue.node.volume === 0),
 | |
| 					new ButtonBuilder()
 | |
| 						.setLabel('🔊')
 | |
| 						.setStyle(2)
 | |
| 						.setCustomId('volume_up')
 | |
| 						.setDisabled(queue.node.volume === 100)
 | |
| 				),
 | |
| 				new ActionRowBuilder().addComponents(
 | |
| 					new ButtonBuilder()
 | |
| 						.setLabel('🔀')
 | |
| 						.setStyle(2)
 | |
| 						.setCustomId('shuffle'),
 | |
| 					new ButtonBuilder()
 | |
| 						.setLabel('🔁')
 | |
| 						.setStyle(2)
 | |
| 						.setCustomId('loop'),
 | |
| 					new ButtonBuilder()
 | |
| 						.setLabel('⏮️')
 | |
| 						.setStyle(2)
 | |
| 						.setCustomId('previous')
 | |
| 						.setDisabled(queue.previousTracks ? !queue.previousTracks[0] : true)
 | |
| 				)
 | |
| 			]
 | |
| 			await dance(client.user.id, channel, embed, components)
 | |
| 		}, 4000)
 | |
| 	}
 | |
| } |