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