Fix playerButtons + generatePlayer
This commit is contained in:
@@ -5,8 +5,7 @@ module.exports = {
|
|||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
let queue = useQueue(interaction.guild.id)
|
let queue = useQueue(interaction.guild.id)
|
||||||
let loop = queue.repeatMode === 0 ? 1 : queue.repeatMode === 1 ? 2 : queue.repeatMode === 2 ? 3 : 0
|
let loop = queue.repeatMode === 0 ? 1 : queue.repeatMode === 1 ? 2 : queue.repeatMode === 2 ? 3 : 0
|
||||||
queue.setRepeatMode(loop)
|
await queue.setRepeatMode(loop)
|
||||||
await interaction.reply({ content:`Boucle ${loop === 0 ? 'désactivée' : loop === 1 ? 'en mode Titre' : loop === 2 ? 'en mode File d\'Attente' : 'en autoplay'}.`, ephemeral: true })
|
await interaction.followUp({ content:`Boucle ${loop === 0 ? 'désactivée' : loop === 1 ? 'en mode Titre' : loop === 2 ? 'en mode File d\'Attente' : 'en autoplay'}.`, ephemeral: true })
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -3,12 +3,8 @@ const { useQueue } = require('discord-player')
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
id: 'pause',
|
id: 'pause',
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
console.log(interaction)
|
|
||||||
console.log(interaction.reply)
|
|
||||||
console.log(interaction.reply())
|
|
||||||
let queue = useQueue(interaction.guild.id)
|
let queue = useQueue(interaction.guild.id)
|
||||||
queue.node.setPaused(!queue.node.isPaused())
|
await queue.node.setPaused(!queue.node.isPaused())
|
||||||
await interaction.reply({ content: 'Musique mise en pause !', ephemeral: true })
|
return interaction.followUp({ content: 'Musique mise en pause !', ephemeral: true })
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,6 @@ module.exports = {
|
|||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
let history = useHistory(interaction.guild.id)
|
let history = useHistory(interaction.guild.id)
|
||||||
await history.previous()
|
await history.previous()
|
||||||
await interaction.reply({ content: 'Musique précédente jouée !', ephemeral: true })
|
return interaction.followUp({ content: 'Musique précédente jouée !', ephemeral: true })
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,8 +4,7 @@ module.exports = {
|
|||||||
id: 'resume',
|
id: 'resume',
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
let queue = useQueue(interaction.guild.id)
|
let queue = useQueue(interaction.guild.id)
|
||||||
queue.node.setPaused(!queue.node.isPaused())
|
await queue.node.setPaused(!queue.node.isPaused())
|
||||||
await interaction.reply({ content: 'Musique reprise !', ephemeral: true })
|
return interaction.followUp({ content: 'Musique reprise !', ephemeral: true })
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,8 +4,7 @@ module.exports = {
|
|||||||
id: 'shuffle',
|
id: 'shuffle',
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
let queue = useQueue(interaction.guild.id)
|
let queue = useQueue(interaction.guild.id)
|
||||||
queue.tracks.shuffle()
|
await queue.tracks.shuffle()
|
||||||
await interaction.reply({ content: 'File d\'attente mélangée !', ephemeral: true })
|
return interaction.followUp({ content: 'File d\'attente mélangée !', ephemeral: true })
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,8 +4,7 @@ module.exports = {
|
|||||||
id: 'skip',
|
id: 'skip',
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
let queue = useQueue(interaction.guild.id)
|
let queue = useQueue(interaction.guild.id)
|
||||||
queue.node.skip()
|
await queue.node.skip()
|
||||||
await interaction.reply({ content: 'Musique passée !', ephemeral: true })
|
return interaction.followUp({ content: 'Musique passée !', ephemeral: true })
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,8 +4,7 @@ module.exports = {
|
|||||||
id: 'stop',
|
id: 'stop',
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
let queue = useQueue(interaction.guild.id)
|
let queue = useQueue(interaction.guild.id)
|
||||||
queue.delete()
|
await queue.delete()
|
||||||
await interaction.reply({ content: 'Musique arrêtée !', ephemeral: true })
|
return interaction.followUp({ content: 'Musique arrêtée !', ephemeral: true })
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,14 +4,8 @@ module.exports = {
|
|||||||
id: 'volume_down',
|
id: 'volume_down',
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
let queue = useQueue(interaction.guild.id)
|
let queue = useQueue(interaction.guild.id)
|
||||||
if (!queue) await interaction.reply({ content: 'Aucune musique en cours de lecture.', ephemeral: true })
|
let volume = queue.node.volume - 10
|
||||||
else {
|
await queue.node.setVolume(volume)
|
||||||
let volume = queue.node.volume - 10
|
return interaction.followUp({ content: `🔉 | Volume modifié à ${volume}% !`, ephemeral: true })
|
||||||
queue.node.setVolume(volume)
|
}
|
||||||
//await interaction.reply({ content: `🔉 | Volume modifié à ${volume}% !`, ephemeral: true })
|
|
||||||
let message = await interaction.fetchReply()
|
|
||||||
await message.edit({ content: `🔉 | Volume modifié à ${volume}% !`, ephemeral: true })
|
|
||||||
}
|
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,14 +4,8 @@ module.exports = {
|
|||||||
id: 'volume_up',
|
id: 'volume_up',
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
let queue = useQueue(interaction.guild.id)
|
let queue = useQueue(interaction.guild.id)
|
||||||
if (!queue) await interaction.reply({ content: 'Aucune musique en cours de lecture.', ephemeral: true })
|
let volume = queue.node.volume + 10
|
||||||
else {
|
await queue.node.setVolume(volume)
|
||||||
let volume = queue.node.volume + 10
|
return interaction.followUp({ content: `🔊 | Volume modifié à ${volume}% !`, ephemeral: true })
|
||||||
queue.node.setVolume(volume)
|
}
|
||||||
//await interaction.reply({ content: `🔉 | Volume modifié à ${volume}% !`, ephemeral: true })
|
|
||||||
let message = await interaction.fetchReply()
|
|
||||||
await message.edit({ content: `🔉 | Volume modifié à ${volume}% !`, ephemeral: true })
|
|
||||||
}
|
|
||||||
setTimeout(async () => { await interaction.deleteReply() }, 20000)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -7,8 +7,17 @@ const playerButtons = require(appDir + '/utilsPlayer/buttons.js')
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
name: Events.InteractionCreate,
|
name: Events.InteractionCreate,
|
||||||
async execute(interaction) {
|
async execute(interaction) {
|
||||||
if (!interaction.isAutocomplete() && !interaction.isChatInputCommand() && !interaction.isButton()) return console.error(`Interaction ${interaction.commandName} is not a command.`)
|
//if (!interaction.isAutocomplete() && !interaction.isChatInputCommand() && !interaction.isButton()) return console.error(`Interaction ${interaction.commandName} is not a command.`)
|
||||||
|
|
||||||
|
if (interaction.isChatInputCommand()) {
|
||||||
|
let command = interaction.client.commands.get(interaction.commandName)
|
||||||
|
if (!command) return console.error(`No command matching ${interaction.commandName} was found.`)
|
||||||
|
|
||||||
|
console.log(`\u001b[1;33m Command '${interaction.commandName}' launched by ${interaction.user.tag}`)
|
||||||
|
|
||||||
|
try { await command.execute(interaction) }
|
||||||
|
catch (error) { console.error(`Error executing ${interaction.commandName}:`, error) }
|
||||||
|
}
|
||||||
else if (interaction.isAutocomplete()) {
|
else if (interaction.isAutocomplete()) {
|
||||||
let autoCompleteRun = interaction.client.commands.get(interaction.commandName)
|
let autoCompleteRun = interaction.client.commands.get(interaction.commandName)
|
||||||
if (!autoCompleteRun) return console.error(`No autoCompleteRun matching ${interaction.commandName} was found.`)
|
if (!autoCompleteRun) return console.error(`No autoCompleteRun matching ${interaction.commandName} was found.`)
|
||||||
@@ -18,17 +27,6 @@ module.exports = {
|
|||||||
try { await autoCompleteRun.autocompleteRun(interaction) }
|
try { await autoCompleteRun.autocompleteRun(interaction) }
|
||||||
catch (error) { console.error(`Error autocompleting ${interaction.commandName}:`, error) }
|
catch (error) { console.error(`Error autocompleting ${interaction.commandName}:`, error) }
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (interaction.isChatInputCommand()) {
|
|
||||||
let command = interaction.client.commands.get(interaction.commandName)
|
|
||||||
if (!command) return console.error(`No command matching ${interaction.commandName} was found.`)
|
|
||||||
|
|
||||||
console.log(`\u001b[1;33m Command '${interaction.commandName}' launched by ${interaction.user.tag}`)
|
|
||||||
|
|
||||||
try { await command.execute(interaction) }
|
|
||||||
catch (error) { console.error(`Error executing ${interaction.commandName}:`, error) }
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (interaction.isButton()) {
|
else if (interaction.isButton()) {
|
||||||
let button = interaction.client.buttons.get(interaction.customId)
|
let button = interaction.client.buttons.get(interaction.customId)
|
||||||
if (!button) return console.error(`No button id matching ${interaction.customId} was found.`)
|
if (!button) return console.error(`No button id matching ${interaction.customId} was found.`)
|
||||||
|
|||||||
@@ -1,23 +1,13 @@
|
|||||||
const { Events } = require('discord.js')
|
const { Events } = require('discord.js')
|
||||||
const { useMasterPlayer, useQueue } = require('discord-player')
|
|
||||||
require('dotenv').config()
|
require('dotenv').config()
|
||||||
|
|
||||||
|
const appDir = require('path').dirname(require.main.filename)
|
||||||
|
const replay = require(appDir + '/utilsPlayer/replay.js')
|
||||||
|
const disco = require(appDir + '/utilsPlayer/disco.js')
|
||||||
|
|
||||||
//const { DataTypes } = require("sequelize")
|
//const { DataTypes } = require("sequelize")
|
||||||
//const sequelize = require('../utils/initSequelize.js')
|
//const sequelize = require('../utils/initSequelize.js')
|
||||||
|
|
||||||
const appDir = require('path').dirname(require.main.filename)
|
|
||||||
const generatePlayer = require(appDir + '/utilsPlayer/generate.js')
|
|
||||||
const getUptime = require(appDir + '/utils/getUptime.js')
|
|
||||||
|
|
||||||
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 })
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: Events.ClientReady,
|
name: Events.ClientReady,
|
||||||
once: true,
|
once: true,
|
||||||
@@ -25,46 +15,7 @@ module.exports = {
|
|||||||
console.log(`\u001b[1;35m Ready! Logged in as ${client.user.tag}`)
|
console.log(`\u001b[1;35m Ready! Logged in as ${client.user.tag}`)
|
||||||
|
|
||||||
// Check if a music session was active before the bot was restarted
|
// Check if a music session was active before the bot was restarted
|
||||||
if (process.env.DISCORD_MUSIC_CURRENT_TRACK) {
|
if (process.env.DISCORD_MUSIC_CURRENT_TRACK) await replay(client)
|
||||||
let textChannel = client.channels.cache.get(process.env.DISCORD_MUSIC_TEXTCHANNEL_ID)
|
|
||||||
let voiceChannel = client.channels.cache.get(process.env.DISCORD_MUSIC_VOICECHANNEL_ID)
|
|
||||||
|
|
||||||
let player = useMasterPlayer()
|
|
||||||
let queue = player.nodes.create(textChannel.guild, {
|
|
||||||
metadata: {
|
|
||||||
channel: textChannel,
|
|
||||||
client: textChannel.guild.members.me,
|
|
||||||
requestedBy: client.user
|
|
||||||
},
|
|
||||||
selfDeaf: true,
|
|
||||||
volume: 20,
|
|
||||||
leaveOnEmpty: true,
|
|
||||||
leaveOnEmptyCooldown: 300000,
|
|
||||||
leaveOnEnd: true,
|
|
||||||
leaveOnEndCooldown: 300000,
|
|
||||||
skipOnNoStream: true
|
|
||||||
})
|
|
||||||
|
|
||||||
try { if (!queue.connection) await queue.connect(voiceChannel) }
|
|
||||||
catch (error) { console.error(error); await textChannel.send(`Y'a eu un problème, <@223831938346123275> ! (${error.message})`) }
|
|
||||||
|
|
||||||
let result = await player.search(process.env.DISCORD_MUSIC_CURRENT_TRACK, { requestedBy: client.user })
|
|
||||||
if (!result.hasTracks()) await textChannel.send(`Aucune musique trouvée pour **${query}** !`)
|
|
||||||
let track = result.tracks[0]
|
|
||||||
|
|
||||||
let entry = queue.tasksQueue.acquire()
|
|
||||||
await entry.getTask()
|
|
||||||
queue.addTrack(track)
|
|
||||||
|
|
||||||
let progress = process.env.DISCORD_MUSIC_CURRENT_PROGRESS
|
|
||||||
|
|
||||||
try {
|
|
||||||
await queue.node.play()
|
|
||||||
queue.node.seek(progress)
|
|
||||||
await textChannel.send(`Relancement de la musique suite à mon redémarrage...`)
|
|
||||||
} catch (error) { console.error(error); await textChannel.send(`Y'a eu un problème, <@223831938346123275> ! (${error.message})`) }
|
|
||||||
finally { queue.tasksQueue.release() }
|
|
||||||
}
|
|
||||||
|
|
||||||
//try {
|
//try {
|
||||||
// sequelize.authenticate()
|
// sequelize.authenticate()
|
||||||
@@ -72,38 +23,8 @@ module.exports = {
|
|||||||
//} catch (error) { console.error('Unable to connect to the database:', error) }
|
//} catch (error) { console.error('Unable to connect to the database:', error) }
|
||||||
|
|
||||||
var interval = setInterval(async () => {
|
var interval = setInterval(async () => {
|
||||||
//client.guilds.cache.each(async guild => {
|
let state = await disco(client)
|
||||||
//const Data = sequelize.define(guild.id, {
|
if (state === 'clear') clearInterval(interval)
|
||||||
// playerChannelId: DataTypes.STRING
|
}, 2000)
|
||||||
//})
|
|
||||||
//await sequelize.sync({ force: true })
|
|
||||||
|
|
||||||
//if (!Data.playerChannelId) {
|
|
||||||
// clearInterval(interval)
|
|
||||||
// return console.log(`\u001b[1;31m Aucun channel inscrit dans la base, veuillez utiliser la commande \`/setchannel\` !`)
|
|
||||||
//}
|
|
||||||
//let channel = client.channels.cache.get(Data.playerChannelId)
|
|
||||||
|
|
||||||
let guild = client.guilds.cache.get(process.env.DISCORD_GUILD_ID)
|
|
||||||
let channel = client.channels.cache.get(process.env.DISCORD_PLAYERCHANNEL_ID)
|
|
||||||
if (!channel) {
|
|
||||||
clearInterval(interval)
|
|
||||||
return console.log(`\u001b[1;31m Error: Aucun channel trouvé avec l'id \`${process.env.DISCORD_PLAYERCHANNEL_ID}\`, veuillez utiliser la commande \`/setchannel\` !`)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Keep track of the music progress if the bot reboots
|
|
||||||
let queue = useQueue(guild.id)
|
|
||||||
if (queue) if (queue.isPlaying()) writeEnv('DISCORD_MUSIC_CURRENT_PROGRESS', queue.node.playbackTime)
|
|
||||||
|
|
||||||
let { embed, components } = await generatePlayer(guild)
|
|
||||||
if (components) {
|
|
||||||
embed.setFooter({ text: `Uptime: ${getUptime(client.uptime)} / ${embed.data.footer.text}` })
|
|
||||||
await dance(client.user.id, channel, embed, components)
|
|
||||||
} else {
|
|
||||||
embed.setFooter({ text: `Uptime: ${getUptime(client.uptime)}` })
|
|
||||||
await dance(client.user.id, channel, embed)
|
|
||||||
}
|
|
||||||
//})
|
|
||||||
}, 4000)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
10
package-lock.json
generated
10
package-lock.json
generated
@@ -24,7 +24,6 @@
|
|||||||
"parse-torrent": "^11.0.12",
|
"parse-torrent": "^11.0.12",
|
||||||
"play-dl": "^1.9.6",
|
"play-dl": "^1.9.6",
|
||||||
"prism-media": "^1.3.5",
|
"prism-media": "^1.3.5",
|
||||||
"querystring": "^0.2.1",
|
|
||||||
"require-all": "^3.0.0",
|
"require-all": "^3.0.0",
|
||||||
"sequelize": "^6.32.0",
|
"sequelize": "^6.32.0",
|
||||||
"sqlite3": "^5.1.6",
|
"sqlite3": "^5.1.6",
|
||||||
@@ -2931,15 +2930,6 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/querystring": {
|
|
||||||
"version": "0.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
|
|
||||||
"integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
|
|
||||||
"deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.4.x"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/queue-microtask": {
|
"node_modules/queue-microtask": {
|
||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||||
|
|||||||
@@ -34,7 +34,6 @@
|
|||||||
"parse-torrent": "^11.0.12",
|
"parse-torrent": "^11.0.12",
|
||||||
"play-dl": "^1.9.6",
|
"play-dl": "^1.9.6",
|
||||||
"prism-media": "^1.3.5",
|
"prism-media": "^1.3.5",
|
||||||
"querystring": "^0.2.1",
|
|
||||||
"require-all": "^3.0.0",
|
"require-all": "^3.0.0",
|
||||||
"sequelize": "^6.32.0",
|
"sequelize": "^6.32.0",
|
||||||
"sqlite3": "^5.1.6",
|
"sqlite3": "^5.1.6",
|
||||||
|
|||||||
50
utilsPlayer/disco.js
Normal file
50
utilsPlayer/disco.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
const { useQueue } = require('discord-player')
|
||||||
|
|
||||||
|
const appDir = require('path').dirname(require.main.filename)
|
||||||
|
const generate = require(appDir + '/utilsPlayer/generate.js')
|
||||||
|
const getUptime = require(appDir + '/utils/getUptime.js')
|
||||||
|
|
||||||
|
module.exports = replay = async (client) => {
|
||||||
|
//client.guilds.cache.each(async guild => {
|
||||||
|
//const Data = sequelize.define(guild.id, {
|
||||||
|
// playerChannelId: DataTypes.STRING
|
||||||
|
//})
|
||||||
|
//await sequelize.sync({ force: true })
|
||||||
|
|
||||||
|
//if (!Data.playerChannelId) {
|
||||||
|
// clearInterval(interval)
|
||||||
|
// console.log(`\u001b[1;31m Aucun channel inscrit dans la base, veuillez utiliser la commande \`/setchannel\` !`)
|
||||||
|
// return 'clear'
|
||||||
|
//}
|
||||||
|
//let channel = client.channels.cache.get(Data.playerChannelId)
|
||||||
|
|
||||||
|
let guild = client.guilds.cache.get(process.env.DISCORD_GUILD_ID)
|
||||||
|
if (!guild) {
|
||||||
|
clearInterval(interval)
|
||||||
|
console.log(`\u001b[1;31m Error: Aucun serveur trouvé avec l'id \`${process.env.DISCORD_GUILD_ID}\`, veuillez utiliser la commande \`/setchannel\` !`)
|
||||||
|
return 'clear'
|
||||||
|
}
|
||||||
|
|
||||||
|
// Keep track of the music progress if the bot reboots
|
||||||
|
let queue = useQueue(guild.id)
|
||||||
|
if (queue) if (queue.isPlaying()) writeEnv('DISCORD_MUSIC_CURRENT_PROGRESS', queue.node.playbackTime)
|
||||||
|
|
||||||
|
let channel = client.channels.cache.get(process.env.DISCORD_PLAYERCHANNEL_ID)
|
||||||
|
if (!channel) {
|
||||||
|
clearInterval(interval)
|
||||||
|
console.log(`\u001b[1;31m Error: Aucun channel trouvé avec l'id \`${process.env.DISCORD_PLAYERCHANNEL_ID}\`, veuillez utiliser la commande \`/setchannel\` !`)
|
||||||
|
return 'clear'
|
||||||
|
}
|
||||||
|
|
||||||
|
let { embed, components } = await generate(guild)
|
||||||
|
if (components) embed.setFooter({ text: `Uptime: ${getUptime(client.uptime)} \n ${embed.data.footer.text}` })
|
||||||
|
else embed.setFooter({ text: `Uptime: ${getUptime(client.uptime)}` })
|
||||||
|
|
||||||
|
let messages = await channel.messages.fetch()
|
||||||
|
let botMessage = messages.find(msg => msg.author.id === client.user.id)
|
||||||
|
|
||||||
|
if (!botMessage || (!components && botMessage.components.length > 0)) {
|
||||||
|
await channel.bulkDelete(messages)
|
||||||
|
return channel.send({ embeds: [embed] })
|
||||||
|
} else return botMessage.edit({ embeds: [embed], components })
|
||||||
|
}
|
||||||
@@ -59,5 +59,5 @@ module.exports = async (interaction) => {
|
|||||||
.setDisabled(true)
|
.setDisabled(true)
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
interaction.update({ components, content: 'Chargement...' })
|
await interaction.update({ components })
|
||||||
}
|
}
|
||||||
@@ -2,17 +2,20 @@ const { EmbedBuilder, ButtonBuilder, ActionRowBuilder } = require('discord.js')
|
|||||||
const { useQueue } = require('discord-player')
|
const { useQueue } = require('discord-player')
|
||||||
|
|
||||||
module.exports = async (guild) => {
|
module.exports = async (guild) => {
|
||||||
let queue = useQueue(guild.id)
|
|
||||||
let embed = new EmbedBuilder().setColor('#ffc370')
|
let embed = new EmbedBuilder().setColor('#ffc370')
|
||||||
|
|
||||||
|
let queue = useQueue(guild.id)
|
||||||
if (!queue) {
|
if (!queue) {
|
||||||
embed.setTitle('Aucune session d\'écoute en cours !')
|
embed.setTitle('Aucune session d\'écoute en cours !')
|
||||||
return ({ embed, components: null })
|
return ({ embed, components: null })
|
||||||
}
|
}
|
||||||
|
|
||||||
let track = queue.currentTrack
|
let track = queue.currentTrack
|
||||||
if (!track) {
|
if (!track) {
|
||||||
embed.setTitle('Aucune musique en cours de lecture !')
|
embed.setTitle('Aucune musique en cours de lecture !')
|
||||||
return ({ embed, components: null })
|
return ({ embed, components: null })
|
||||||
}
|
}
|
||||||
|
|
||||||
embed.setTitle(track.title)
|
embed.setTitle(track.title)
|
||||||
.setAuthor({ name: track.author })
|
.setAuthor({ name: track.author })
|
||||||
.setURL(track.url)
|
.setURL(track.url)
|
||||||
@@ -25,7 +28,7 @@ module.exports = async (guild) => {
|
|||||||
{ name: 'Loop', value: queue.repeatMode ? queue.repeatMode === 2 ? "File d'Attente" : "Titre" : "Off", inline: true },
|
{ name: 'Loop', value: queue.repeatMode ? queue.repeatMode === 2 ? "File d'Attente" : "Titre" : "Off", inline: true },
|
||||||
{ name: 'Autoplay', value: queue.autoplay ? "On" : "Off", inline: true }
|
{ name: 'Autoplay', value: queue.autoplay ? "On" : "Off", inline: true }
|
||||||
)
|
)
|
||||||
.setDescription(`**Musique suivante :** ${queue.tracks[0] ? queue.tracks[0].title : 'Aucune'}`)
|
.setDescription(`**Musique suivante :** ${queue.tracks.data[0] ? queue.tracks.data[0].title : 'Aucune'}`)
|
||||||
.setFooter({ text: `Demandé par ${track.requestedBy.tag}` })
|
.setFooter({ text: `Demandé par ${track.requestedBy.tag}` })
|
||||||
|
|
||||||
let components = [
|
let components = [
|
||||||
@@ -42,7 +45,7 @@ module.exports = async (guild) => {
|
|||||||
.setLabel('⏭️')
|
.setLabel('⏭️')
|
||||||
.setStyle(2)
|
.setStyle(2)
|
||||||
.setCustomId('skip')
|
.setCustomId('skip')
|
||||||
.setDisabled(queue.tracks.length !== 0),
|
.setDisabled(queue.tracks.data.length !== 0),
|
||||||
new ButtonBuilder()
|
new ButtonBuilder()
|
||||||
.setLabel('🔉')
|
.setLabel('🔉')
|
||||||
.setStyle(2)
|
.setStyle(2)
|
||||||
|
|||||||
42
utilsPlayer/replay.js
Normal file
42
utilsPlayer/replay.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
const { useMasterPlayer } = require('discord-player')
|
||||||
|
|
||||||
|
module.exports = replay = async (client) => {
|
||||||
|
let textChannel = client.channels.cache.get(process.env.DISCORD_MUSIC_TEXTCHANNEL_ID)
|
||||||
|
let voiceChannel = client.channels.cache.get(process.env.DISCORD_MUSIC_VOICECHANNEL_ID)
|
||||||
|
|
||||||
|
let player = useMasterPlayer()
|
||||||
|
let queue = player.nodes.create(textChannel.guild, {
|
||||||
|
metadata: {
|
||||||
|
channel: textChannel,
|
||||||
|
client: textChannel.guild.members.me,
|
||||||
|
requestedBy: client.user
|
||||||
|
},
|
||||||
|
selfDeaf: true,
|
||||||
|
volume: 20,
|
||||||
|
leaveOnEmpty: true,
|
||||||
|
leaveOnEmptyCooldown: 300000,
|
||||||
|
leaveOnEnd: true,
|
||||||
|
leaveOnEndCooldown: 300000,
|
||||||
|
skipOnNoStream: true
|
||||||
|
})
|
||||||
|
|
||||||
|
try { if (!queue.connection) await queue.connect(voiceChannel) }
|
||||||
|
catch (error) { console.error(error); await textChannel.send(`Y'a eu un problème, <@223831938346123275> ! (${error.message})`) }
|
||||||
|
|
||||||
|
let result = await player.search(process.env.DISCORD_MUSIC_CURRENT_TRACK, { requestedBy: client.user })
|
||||||
|
if (!result.hasTracks()) await textChannel.send(`Aucune musique trouvée pour **${query}** !`)
|
||||||
|
let track = result.tracks[0]
|
||||||
|
|
||||||
|
let entry = queue.tasksQueue.acquire()
|
||||||
|
await entry.getTask()
|
||||||
|
queue.addTrack(track)
|
||||||
|
|
||||||
|
let progress = process.env.DISCORD_MUSIC_CURRENT_PROGRESS
|
||||||
|
|
||||||
|
try {
|
||||||
|
await queue.node.play()
|
||||||
|
queue.node.seek(progress)
|
||||||
|
await textChannel.send(`Relancement de la musique suite à mon redémarrage...`)
|
||||||
|
} catch (error) { console.error(error); await textChannel.send(`Y'a eu un problème, <@223831938346123275> ! (${error.message})`) }
|
||||||
|
finally { queue.tasksQueue.release() }
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user