Relance music si crash/reboot + Réécriture /amp

This commit is contained in:
Zachary Guénot
2023-05-28 20:39:11 +02:00
parent f6bf2f8616
commit d02dd5bace
15 changed files with 234 additions and 108 deletions

View File

@@ -1,6 +1,8 @@
const { Events } = require('discord.js')
const editPlayer = require('../utilsPlayer/edit.js')
const playerButtons = require('../utilsPlayer/buttons.js')
const appDir = require('path').dirname(require.main.filename)
const editPlayer = require(appDir + '/utilsPlayer/edit.js')
const playerButtons = require(appDir + '/utilsPlayer/buttons.js')
module.exports = {
name: Events.InteractionCreate,

View File

@@ -1,9 +1,13 @@
const { Events } = require('discord.js')
const { useMasterPlayer, useQueue } = require('discord-player')
require('dotenv').config()
//const { DataTypes } = require("sequelize")
//const sequelize = require('../utils/initSequelize.js')
const generatePlayer = require('../utilsPlayer/generate.js')
const getUptime = require('../utils/getUptime.js')
require('dotenv').config()
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()
@@ -17,9 +21,50 @@ const dance = async function (bot_id, channel, embed, components) {
module.exports = {
name: Events.ClientReady,
once: true,
execute(client) {
async execute(client) {
console.log(`\u001b[1;35m Ready! Logged in as ${client.user.tag}`)
// Check if a music session was active before the bot was restarted
if (process.env.DISCORD_MUSIC_CURRENT_TRACK) {
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: voiceChannel,
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)
try {
await queue.node.play()
queue.node.seek(process.env.DISCORD_MUSIC_CURRENT_PROGRESS)
queue.setRepeatMode(1)
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 {
// sequelize.authenticate()
// console.log('Connection has been established successfully.')
@@ -45,8 +90,11 @@ module.exports = {
return console.log(`\u001b[1;31m Error: Aucun channel trouvé avec l'id \`${process.env.DISCORD_PLAYERCHANNEL_ID}\`, veuillez utiliser la commande \`/setchannel\` !`)
}
let { embed, components } = await generatePlayer(guild)
// 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)