Version 1.1.0 - Preversion 2.0.0 - Rework Code & Fixes
This commit is contained in:
		@@ -3,10 +3,12 @@ const fs = require("node:fs")
 | 
			
		||||
const path = require("path")
 | 
			
		||||
const { Manager } = require("erela.js")
 | 
			
		||||
const { __glob } = require("./global-variables")
 | 
			
		||||
const { LogType } = require("../modules/sub-log")
 | 
			
		||||
const { LogType } = require("loguix")
 | 
			
		||||
const { List } = require("./sub-list")
 | 
			
		||||
const nodeFinder = require("./nodes-finder")
 | 
			
		||||
const subplayer = require("./sub-player")
 | 
			
		||||
const nodemon = require("nodemon")
 | 
			
		||||
const metric = require("webmetrik") 
 | 
			
		||||
 | 
			
		||||
const client = new Client({
 | 
			
		||||
    intents:[GatewayIntentBits.Guilds, GatewayIntentBits.GuildVoiceStates, GatewayIntentBits.GuildMembers],
 | 
			
		||||
@@ -121,10 +123,16 @@ function init(dlog, config) {
 | 
			
		||||
        
 | 
			
		||||
        if(!interaction.isCommand()) return;
 | 
			
		||||
 | 
			
		||||
        var numberOfCommands = new metric.Metric("numberOfCommands", "Nombre de commandes éxécutées")
 | 
			
		||||
        numberOfCommands.setValue(numberOfCommands.getValue() + 1)
 | 
			
		||||
 | 
			
		||||
        const command = client.commands.get(interaction.commandName)
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
           
 | 
			
		||||
            
 | 
			
		||||
            // Create a metric to count the number of commands executed by each user
 | 
			
		||||
            const userCommand = new metric.Metric("userCommand_" + interaction.member.user.username, "Nombre de commandes éxécutées par l'utilisateur : " + interaction.member.user.username)
 | 
			
		||||
            userCommand.setValue(userCommand.getValue() + 1)
 | 
			
		||||
            dlog.log(interaction.member.user.username + "-> /" + interaction.commandName)
 | 
			
		||||
            command.execute(client, interaction)
 | 
			
		||||
        } catch(error) {
 | 
			
		||||
@@ -224,8 +232,19 @@ function startErelaManager(dlog, config) {
 | 
			
		||||
 | 
			
		||||
    client.manager.on("trackStart", async (player) => {
 | 
			
		||||
 | 
			
		||||
        // Create a metric to count the number of songs played
 | 
			
		||||
        const songPlayed = new metric.Metric("songPlayed", "Nombre de musiques jouées")
 | 
			
		||||
        songPlayed.setValue(songPlayed.getValue() + 1)
 | 
			
		||||
 | 
			
		||||
        if(player) {
 | 
			
		||||
            plog.log("Lecture de '" + player.queue.current.title + "' de '" + player.queue.current.author + "'")
 | 
			
		||||
            // Create a metric to count the number of minutes played by the bot using player.queue.current.duration which is in ms (milliseconds) and verify if it's not a livestream
 | 
			
		||||
 | 
			
		||||
            if(player.queue.current.duration && player.queue.current.duration != 9223372036854776000) {
 | 
			
		||||
                const songDuration = new metric.Metric("songDuration", "Durée totale des musiques jouées en secondes")
 | 
			
		||||
                songDuration.setValue(songDuration.getValue() + (player.queue.current.duration / 1000))
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            await list.setCurrent(player)
 | 
			
		||||
            await player.seek(0)
 | 
			
		||||
            process.emit("MUSIC_UPDATE_STATE")
 | 
			
		||||
@@ -240,6 +259,7 @@ function startErelaManager(dlog, config) {
 | 
			
		||||
 | 
			
		||||
            await list.addCurrentToPrevious()
 | 
			
		||||
            if(await list.haveSongs()) {
 | 
			
		||||
                
 | 
			
		||||
                await player.play(list.next())
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
@@ -275,3 +295,17 @@ function startErelaManager(dlog, config) {
 | 
			
		||||
    client.on("raw", d => client.manager.updateVoiceState(d));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function closeClient()  {
 | 
			
		||||
    console.log("Fermeture du client Discord")
 | 
			
		||||
    if(client) {
 | 
			
		||||
        let player = await client.manager.players.get("137291455336022018")
 | 
			
		||||
        if(player) {
 | 
			
		||||
            await player.destroy()
 | 
			
		||||
        }
 | 
			
		||||
        client.destroy()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,6 @@ const root = path.resolve(__dirname, '../../')
 | 
			
		||||
const __glob = {
 | 
			
		||||
    CONFIG:  root + path.sep + "data" + path.sep + "config.json",
 | 
			
		||||
    USERS:  root + path.sep + "data" + path.sep + "users.json",
 | 
			
		||||
    BETA_USERS:  root + path.sep + "data" + path.sep + "betas.json",
 | 
			
		||||
    ROOT: root,
 | 
			
		||||
    WEB_DIR: root + path.sep + "src" + path.sep + "web",
 | 
			
		||||
    COMMANDS: root + path.sep + "src" + path.sep + "commands",
 | 
			
		||||
@@ -21,6 +20,7 @@ const __glob = {
 | 
			
		||||
    RADIO:  root + path.sep + "data" + path.sep + "radios.json",
 | 
			
		||||
    LOGS: root + path.sep + "src" + path.sep + "modules" + path.sep + "logs",
 | 
			
		||||
    METRIC_FILE: root + path.sep + "data" + path.sep + "metrics.json",
 | 
			
		||||
    PICTURE_DIR: root + path.sep + "data" + path.sep + "pictures",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const webroot = __glob.WEB_DIR + path.sep 
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
const { __glob } = require("./global-variables")
 | 
			
		||||
const { LogType } = require("../modules/sub-log")
 | 
			
		||||
const { LogType } = require("loguix")
 | 
			
		||||
const fs = require("fs")
 | 
			
		||||
const discord = require("./discord-bot")
 | 
			
		||||
 | 
			
		||||
@@ -7,242 +7,127 @@ const nlog = new LogType("Node-Finder")
 | 
			
		||||
 | 
			
		||||
const nodesState = new Map()
 | 
			
		||||
 | 
			
		||||
module.exports.getNodes = function () {
 | 
			
		||||
        nlog.step.init("find_nodes", "Récupération des nodes de la base de donnée")
 | 
			
		||||
        
 | 
			
		||||
        if(fs.existsSync(__glob.NODES)) {
 | 
			
		||||
            try {  
 | 
			
		||||
 | 
			
		||||
                var nodes_data = JSON.parse(fs.readFileSync(__glob.NODES))
 | 
			
		||||
                const nodes_array = new Array()
 | 
			
		||||
 | 
			
		||||
                for(var node of nodes_data) {
 | 
			
		||||
                    nodes_array.push(node)
 | 
			
		||||
                    nodesState.set(node.host, false)
 | 
			
		||||
                }
 | 
			
		||||
                
 | 
			
		||||
                nlog.log("Récupération de " + nodes_array.length + " nodes dans la base de donnée !")
 | 
			
		||||
                nlog.step.end("find_nodes")
 | 
			
		||||
                return nodes_array
 | 
			
		||||
            } catch(error) {
 | 
			
		||||
                nlog.step.error("find_nodes", error)
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
 | 
			
		||||
            nlog.warn("Fichier de configuration introuvable !")
 | 
			
		||||
            
 | 
			
		||||
            try {
 | 
			
		||||
                var nodes = {}
 | 
			
		||||
 | 
			
		||||
               
 | 
			
		||||
                fs.writeFileSync(__glob.NODES, JSON.stringify(nodes, null, 2))
 | 
			
		||||
                nlog.log("Création d'un fichier de base de donnée de nodes ! Redémarrage de l'application nécéssaire !")
 | 
			
		||||
                nlog.step.error("find_nodes", "Redémarrage requis pour lire la nouvelle base de donnée des nodes !")
 | 
			
		||||
                process.exit(0)
 | 
			
		||||
            } catch(error) {
 | 
			
		||||
                nlog.step.error("find_nodes", "Tentative de création du fichier de base de donnée nodes échoué !"  + error)
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.getNodesData = function () {
 | 
			
		||||
    nlog.step.init("findu_nodes", "Récupération des nodes pour envoi d'informations!")
 | 
			
		||||
    
 | 
			
		||||
    if(fs.existsSync(__glob.NODES)) {
 | 
			
		||||
        try {  
 | 
			
		||||
 | 
			
		||||
            var nodes_data = JSON.parse(fs.readFileSync(__glob.NODES))
 | 
			
		||||
            const nodes_array = new Array()
 | 
			
		||||
 | 
			
		||||
            for(var node of nodes_data) {
 | 
			
		||||
                node.state = nodesState.get(node.host)
 | 
			
		||||
                nodes_array.push(node)
 | 
			
		||||
                
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            nlog.log("Récupération de " + nodes_array.length + " nodes pour envoi d'informations!")
 | 
			
		||||
            nlog.step.end("findu_nodes")
 | 
			
		||||
            return nodes_array
 | 
			
		||||
        } catch(error) {
 | 
			
		||||
            nlog.step.error("findu_nodes", error)
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
 | 
			
		||||
        nlog.warn("Fichier de configuration introuvable !")
 | 
			
		||||
        
 | 
			
		||||
function checkAndCreate() {
 | 
			
		||||
    if (!fs.existsSync(__glob.NODES)) {
 | 
			
		||||
        try {
 | 
			
		||||
            var nodes = {}
 | 
			
		||||
 | 
			
		||||
           
 | 
			
		||||
            fs.writeFileSync(__glob.NODES, JSON.stringify(nodes, null, 2))
 | 
			
		||||
            saveNodesFile(nodes) 
 | 
			
		||||
            nlog.log("Création d'un fichier de base de donnée de nodes ! Redémarrage de l'application nécéssaire !")
 | 
			
		||||
            nlog.step.error("find_nodes", "Redémarrage requis pour lire la nouvelle base de donnée des nodes !")
 | 
			
		||||
            process.exit(0)
 | 
			
		||||
        } catch(error) {
 | 
			
		||||
            nlog.step.error("find_nodes", "Tentative de création du fichier de base de donnée nodes échoué !"  + error)
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.addNodes = function (data) {
 | 
			
		||||
 | 
			
		||||
    nlog.step.init("add_nodes", "Ajout d'un nouveau noeud dans la base de donnée de nodes : " + data.host)
 | 
			
		||||
        
 | 
			
		||||
    if(fs.existsSync(__glob.NODES)) {
 | 
			
		||||
        try {  
 | 
			
		||||
 | 
			
		||||
            var nodes_data = JSON.parse(fs.readFileSync(__glob.NODES))
 | 
			
		||||
            
 | 
			
		||||
            nodes_data.push(data)
 | 
			
		||||
            fs.writeFileSync(__glob.NODES, JSON.stringify(nodes_data, null, 2))
 | 
			
		||||
           
 | 
			
		||||
            nlog.step.end("add_nodes")
 | 
			
		||||
 | 
			
		||||
            const client = discord.getClient()
 | 
			
		||||
 | 
			
		||||
            if(client.manager) {
 | 
			
		||||
                const nodesPresent = client.manager.nodes
 | 
			
		||||
 | 
			
		||||
                if(!nodesPresent.get(data.host)) {
 | 
			
		||||
                    
 | 
			
		||||
                    client.manager.createNode(data)
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                client.manager.nodes.get(data.host).connect()
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
          
 | 
			
		||||
        } catch(error) {
 | 
			
		||||
            nlog.step.error("add_nodes", error)
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
 | 
			
		||||
        nlog.warn("Fichier de configuration introuvable !")
 | 
			
		||||
        
 | 
			
		||||
        try {
 | 
			
		||||
            var nodes = []
 | 
			
		||||
 | 
			
		||||
           
 | 
			
		||||
            fs.writeFileSync(__glob.NODES, JSON.stringify(nodes, null, 2))
 | 
			
		||||
            nlog.log("Création d'un fichier de base de donnée de nodes ! Redémarrage de l'application nécéssaire !")
 | 
			
		||||
            nlog.step.error("add_nodes", "Redémarrage requis pour lire la nouvelle base de donnée des nodes !")
 | 
			
		||||
            process.exit(0)
 | 
			
		||||
        } catch(error) {
 | 
			
		||||
            nlog.step.error("add_nodes", "Tentative de création du fichier de nodes échoué !"  + error)
 | 
			
		||||
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
            nlog.step.error("find_nodes", "Tentative de création du fichier de base de donnée nodes échoué !" + error)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.deleteNode = function (data) {
 | 
			
		||||
function readNodesFile() {
 | 
			
		||||
    checkAndCreate()
 | 
			
		||||
    return JSON.parse(fs.readFileSync(__glob.NODES))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    nlog.step.init("deleteNodes", "Supression d'un noeud dans la base de donnée de nodes : " + data.host)
 | 
			
		||||
        
 | 
			
		||||
    if(fs.existsSync(__glob.NODES)) {
 | 
			
		||||
        try {  
 | 
			
		||||
 | 
			
		||||
            var nodes_data = JSON.parse(fs.readFileSync(__glob.NODES))
 | 
			
		||||
 | 
			
		||||
            var nodeIndex = -1
 | 
			
		||||
 | 
			
		||||
            for(var node of nodes_data) {
 | 
			
		||||
 | 
			
		||||
                if(node.host == data.host) {
 | 
			
		||||
 | 
			
		||||
                    nodeIndex = nodes_data.indexOf(node)
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            nodes_data.splice(nodeIndex, 1)
 | 
			
		||||
 | 
			
		||||
            const client = discord.getClient()
 | 
			
		||||
 | 
			
		||||
            if(client.manager) {
 | 
			
		||||
                const nodesPresent = client.manager.nodes
 | 
			
		||||
 | 
			
		||||
                if(nodesPresent.get(data.host)) {
 | 
			
		||||
                    
 | 
			
		||||
                    client.manager.destroyNode(data.host)
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            fs.writeFileSync(__glob.NODES, JSON.stringify(nodes_data, null, 2))
 | 
			
		||||
           
 | 
			
		||||
            nlog.step.end("deleteNodes")
 | 
			
		||||
 | 
			
		||||
          
 | 
			
		||||
        } catch(error) {
 | 
			
		||||
            nlog.step.error("deleteNodes", error)
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
 | 
			
		||||
        nlog.warn("Fichier de configuration introuvable !")
 | 
			
		||||
        
 | 
			
		||||
        try {
 | 
			
		||||
            var nodes = []
 | 
			
		||||
 | 
			
		||||
           
 | 
			
		||||
            fs.writeFileSync(__glob.NODES, JSON.stringify(nodes, null, 2))
 | 
			
		||||
            nlog.log("Création d'un fichier de base de donnée de nodes ! Redémarrage de l'application nécéssaire !")
 | 
			
		||||
            nlog.step.error("deleteNodes", "Redémarrage requis pour lire la nouvelle base de donnée des nodes !")
 | 
			
		||||
            process.exit(0)
 | 
			
		||||
        } catch(error) {
 | 
			
		||||
            nlog.step.error("deleteNodes", "Tentative de création du fichier de nodes échoué !"  + error)
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
function saveNodesFile(data) { 
 | 
			
		||||
    fs.writeFileSync(__glob.NODES, JSON.stringify(data, null, 2))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.reloadNode = function (data) {
 | 
			
		||||
 | 
			
		||||
    const client = discord.getClient()
 | 
			
		||||
 | 
			
		||||
    if(client.manager) {
 | 
			
		||||
    if (client.manager) {
 | 
			
		||||
        const nodesPresent = client.manager.nodes
 | 
			
		||||
 | 
			
		||||
        if(nodesPresent.get(data.host)) {
 | 
			
		||||
            
 | 
			
		||||
        if (nodesPresent.get(data.host)) {
 | 
			
		||||
            client.manager.destroyNode(data.host)
 | 
			
		||||
        }
 | 
			
		||||
        nlog.log("Redémarrage de la node : " + data.host)
 | 
			
		||||
 | 
			
		||||
        client.manager.createNode(data)
 | 
			
		||||
        client.manager.nodes.get(data.host).connect()
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Ajout de l'état des nodes
 | 
			
		||||
 * @param {string} node
 | 
			
		||||
 * @param {boolean} state 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
module.exports.setNodeState = function(node, state) {
 | 
			
		||||
 | 
			
		||||
module.exports.setNodeState = function (node, state) {
 | 
			
		||||
    nodesState.set(node, state)
 | 
			
		||||
    process.emit("UPDATE_NODES")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.getNodesStates = function() {
 | 
			
		||||
 | 
			
		||||
module.exports.getNodesStates = function () {
 | 
			
		||||
    return nodesState
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.getNodes = function () {
 | 
			
		||||
 | 
			
		||||
    nlog.step.init("find_nodes", "Récupération des nodes de la base de donnée")
 | 
			
		||||
    try {
 | 
			
		||||
        var nodes_data = readNodesFile()
 | 
			
		||||
        const nodes_array = new Array()
 | 
			
		||||
        for (var node of nodes_data) {
 | 
			
		||||
            nodes_array.push(node)
 | 
			
		||||
            nodesState.set(node.host, false)
 | 
			
		||||
        }
 | 
			
		||||
        nlog.log("Récupération de " + nodes_array.length + " nodes dans la base de donnée !")
 | 
			
		||||
        nlog.step.end("find_nodes")
 | 
			
		||||
        return nodes_array
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        nlog.step.error("find_nodes", error)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.getNodesData = function () {
 | 
			
		||||
    nlog.step.init("findu_nodes", "Récupération des nodes pour envoi d'informations!")
 | 
			
		||||
    try {
 | 
			
		||||
        var nodes_data = readNodesFile()
 | 
			
		||||
        const nodes_array = new Array()
 | 
			
		||||
        for (var node of nodes_data) {
 | 
			
		||||
            node.state = nodesState.get(node.host)
 | 
			
		||||
            nodes_array.push(node)
 | 
			
		||||
        }
 | 
			
		||||
        nlog.log("Récupération de " + nodes_array.length + " nodes pour envoi d'informations!")
 | 
			
		||||
        nlog.step.end("findu_nodes")
 | 
			
		||||
        return nodes_array
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        nlog.step.error("findu_nodes", error)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.addNodes = function (data) {
 | 
			
		||||
    nlog.step.init("add_nodes", "Ajout d'un nouveau noeud dans la base de donnée de nodes : " + data.host)
 | 
			
		||||
    try {
 | 
			
		||||
        var nodes_data = readNodesFile()
 | 
			
		||||
        nodes_data.push(data)
 | 
			
		||||
        saveNodesFile(nodes_data) 
 | 
			
		||||
        nlog.step.end("add_nodes")
 | 
			
		||||
        const client = discord.getClient()
 | 
			
		||||
        if (client.manager) {
 | 
			
		||||
            const nodesPresent = client.manager.nodes
 | 
			
		||||
            if (!nodesPresent.get(data.host)) {
 | 
			
		||||
                client.manager.createNode(data)
 | 
			
		||||
            }
 | 
			
		||||
            client.manager.nodes.get(data.host).connect()
 | 
			
		||||
        }
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        nlog.step.error("add_nodes", error)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.deleteNode = function (data) {
 | 
			
		||||
    nlog.step.init("deleteNodes", "Supression d'un noeud dans la base de donnée de nodes : " + data.host)
 | 
			
		||||
    try {
 | 
			
		||||
        var nodes_data = readNodesFile()
 | 
			
		||||
        var nodeIndex = -1
 | 
			
		||||
        for (var node of nodes_data) {
 | 
			
		||||
            if (node.host == data.host) {
 | 
			
		||||
                nodeIndex = nodes_data.indexOf(node)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        nodes_data.splice(nodeIndex, 1)
 | 
			
		||||
        const client = discord.getClient()
 | 
			
		||||
        if (client.manager) {
 | 
			
		||||
            const nodesPresent = client.manager.nodes
 | 
			
		||||
            if (nodesPresent.get(data.host)) {
 | 
			
		||||
                client.manager.destroyNode(data.host)
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        saveNodesFile(nodes_data) 
 | 
			
		||||
        nlog.step.end("deleteNodes")
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
        nlog.step.error("deleteNodes", error)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,30 +1,94 @@
 | 
			
		||||
const { resolve } = require("path");
 | 
			
		||||
const { __glob, __web } = require("../modules/global-variables");
 | 
			
		||||
const { LogType } = require('./sub-log');
 | 
			
		||||
const fs = require("fs")
 | 
			
		||||
const { __glob, __web } = require("./global-variables");
 | 
			
		||||
const { LogType } = require('loguix');
 | 
			
		||||
const fs = require("fs");
 | 
			
		||||
 | 
			
		||||
const alog = new LogType("Authentification")
 | 
			
		||||
 | 
			
		||||
var users = new Map()
 | 
			
		||||
var sessions = new Array()
 | 
			
		||||
var betausers = new Array()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
var packageJson = JSON.parse(fs.readFileSync(__glob.PACKAGE))
 | 
			
		||||
 | 
			
		||||
updateUsers()
 | 
			
		||||
 | 
			
		||||
module.exports.checkUser = function (token) {
 | 
			
		||||
if(!fs.existsSync(__glob.PICTURE_DIR)){
 | 
			
		||||
    
 | 
			
		||||
    if(users.has(token)) {
 | 
			
		||||
 | 
			
		||||
        return true
 | 
			
		||||
    } else {
 | 
			
		||||
 | 
			
		||||
        return false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fs.mkdirSync(__glob.PICTURE_DIR);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
updateUsers()
 | 
			
		||||
checkAllPictures()
 | 
			
		||||
 | 
			
		||||
module.exports.getDiscordUser = function (code, session) {
 | 
			
		||||
 | 
			
		||||
    return new Promise((resolve, reject) => {
 | 
			
		||||
 | 
			
		||||
        alog.log("Récupération de l'autorisation de récupération des informations de l'utilisateur associé à la session : " + session + " [ETAPE 2]")
 | 
			
		||||
 | 
			
		||||
        var link = "https://subsonics.raphix.fr" 
 | 
			
		||||
 | 
			
		||||
        if(process.env.DEV == "true") {
 | 
			
		||||
            link = "http://localhost:4000"
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const params = new URLSearchParams();
 | 
			
		||||
        params.append('client_id', "1094727789682380922");
 | 
			
		||||
        params.append('client_secret', "uwtyPOPKCgw6ciBs20qiJ7LJrW9Ziclo");
 | 
			
		||||
        params.append('grant_type', 'authorization_code');
 | 
			
		||||
        params.append('code', code);
 | 
			
		||||
        params.append('redirect_uri',  link + "/internal/redirect");
 | 
			
		||||
        params.append('scope', 'identify guilds');
 | 
			
		||||
 | 
			
		||||
        fetch('https://discord.com/api/oauth2/token', {
 | 
			
		||||
            method: "POST",
 | 
			
		||||
            headers: {
 | 
			
		||||
                'Content-Type': 'application/x-www-form-urlencoded'
 | 
			
		||||
            }, body : params
 | 
			
		||||
        }).then(resp1 => resp1.json()).then(authorizationKey => {
 | 
			
		||||
 | 
			
		||||
            alog.log("Récupération des informations de l'utilisateur associé à l'autorisation : '" + authorizationKey.access_token + "' et associé à la session : " + session + " [ETAPE 3]")
 | 
			
		||||
 | 
			
		||||
            fetch('https://discord.com/api/users/@me/guilds/137291455336022018/member', {
 | 
			
		||||
                headers: {
 | 
			
		||||
                    authorization: `${authorizationKey.token_type} ${authorizationKey.access_token}`,
 | 
			
		||||
                },
 | 
			
		||||
            }).then(resp2 => resp2.json()).then(userInfo => {
 | 
			
		||||
 | 
			
		||||
                var user = {}
 | 
			
		||||
                
 | 
			
		||||
                if(typeof userInfo.joined_at == "undefined") {
 | 
			
		||||
                    reject("NOT_IN_CLP")
 | 
			
		||||
                } else if(typeof userInfo.user == "undefined") {
 | 
			
		||||
                    reject("MIGRATE_ACCOUNT_ONLY")
 | 
			
		||||
                } else {
 | 
			
		||||
 | 
			
		||||
                    // Replace existing user from the DB file if exist
 | 
			
		||||
                    const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
                    for (const user of userDB) {
 | 
			
		||||
                        if(user.user.id == userInfo.user.id) {	
 | 
			
		||||
                            userInfo.token = user.token
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                                               
 | 
			
		||||
                    user.auth = authorizationKey;
 | 
			
		||||
 | 
			
		||||
                    if(userInfo.user.id == "486943594893017119") {
 | 
			
		||||
                        user.admin = true;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    Object.assign(user, userInfo);
 | 
			
		||||
                    resolve(user);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }).catch(error => reject(error)) 
 | 
			
		||||
 | 
			
		||||
        }).catch(error => reject(error))
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
/*Session*/
 | 
			
		||||
 | 
			
		||||
module.exports.getSession = function (session) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -39,105 +103,6 @@ module.exports.getSession = function (session) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.getDiscordUser = function (code, session) {
 | 
			
		||||
 | 
			
		||||
    return new Promise((resolve, reject) => {
 | 
			
		||||
 | 
			
		||||
        alog.log("Récupération de l'autorisation de récupération des informations de l'utilisateur associé à la session : " + session + " [ETAPE 2]")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            var link = "https://subsonics.raphix.fr" 
 | 
			
		||||
 | 
			
		||||
            if(process.env.DEV == "true") {
 | 
			
		||||
                link = "http://localhost:4000"
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            const params = new URLSearchParams();
 | 
			
		||||
            params.append('client_id', "1094727789682380922");
 | 
			
		||||
            params.append('client_secret', "uwtyPOPKCgw6ciBs20qiJ7LJrW9Ziclo");
 | 
			
		||||
            params.append('grant_type', 'authorization_code');
 | 
			
		||||
            params.append('code', code);
 | 
			
		||||
            params.append('redirect_uri',  link + "/internal/redirect");
 | 
			
		||||
            params.append('scope', 'identify guilds');
 | 
			
		||||
 | 
			
		||||
            fetch('https://discord.com/api/oauth2/token', {
 | 
			
		||||
                method: "POST",
 | 
			
		||||
                headers: {
 | 
			
		||||
                    'Content-Type': 'application/x-www-form-urlencoded'
 | 
			
		||||
                }, body : params
 | 
			
		||||
            }).then(resp1 => resp1.json()).then(authorizationKey => {
 | 
			
		||||
 | 
			
		||||
                alog.log("Récupération des informations de l'utilisateur associé à l'autorisation : '" + authorizationKey.access_token + "' et associé à la session : " + session + " [ETAPE 3]")
 | 
			
		||||
 | 
			
		||||
                fetch('https://discord.com/api/users/@me/guilds/137291455336022018/member', {
 | 
			
		||||
                    headers: {
 | 
			
		||||
                        authorization: `${authorizationKey.token_type} ${authorizationKey.access_token}`,
 | 
			
		||||
                    },
 | 
			
		||||
                }).then(resp2 => resp2.json()).then(userInfo => {
 | 
			
		||||
 | 
			
		||||
                    var user = {}
 | 
			
		||||
 | 
			
		||||
                    if(typeof userInfo.joined_at == "undefined") {
 | 
			
		||||
 | 
			
		||||
                        reject("NOT_IN_CLP")
 | 
			
		||||
 | 
			
		||||
                    } else if(typeof userInfo.user == "undefined") {
 | 
			
		||||
                        reject("MIGRATE_ACCOUNT_ONLY")
 | 
			
		||||
 | 
			
		||||
                    } else {
 | 
			
		||||
 | 
			
		||||
                        if(packageJson.beta_on == false) {
 | 
			
		||||
                            user.auth = authorizationKey
 | 
			
		||||
                            if(userInfo.user.id == "486943594893017119") {
 | 
			
		||||
 | 
			
		||||
                                user.admin = true
 | 
			
		||||
                            }
 | 
			
		||||
        
 | 
			
		||||
                            Object.assign(user, userInfo)
 | 
			
		||||
                            
 | 
			
		||||
                           
 | 
			
		||||
                            resolve(user)
 | 
			
		||||
 | 
			
		||||
                        } else {
 | 
			
		||||
 | 
			
		||||
                            if(betausers.includes(userInfo.user.id)) {
 | 
			
		||||
                                user.auth = authorizationKey
 | 
			
		||||
                                if(userInfo.user.id == "486943594893017119") {
 | 
			
		||||
 | 
			
		||||
                                    user.admin = true
 | 
			
		||||
                                }
 | 
			
		||||
                                user.beta = true
 | 
			
		||||
                                Object.assign(user, userInfo)
 | 
			
		||||
                                
 | 
			
		||||
                               
 | 
			
		||||
                                resolve(user)
 | 
			
		||||
    
 | 
			
		||||
                            } else {
 | 
			
		||||
 | 
			
		||||
                                reject("NOT_IN_BETA")
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                        }
 | 
			
		||||
                        
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                  
 | 
			
		||||
                    
 | 
			
		||||
 | 
			
		||||
                }).catch(error => reject(error)) 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }).catch(error => reject(error))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.saveSession = function (session) {
 | 
			
		||||
 | 
			
		||||
    sessions.push(session)
 | 
			
		||||
@@ -153,23 +118,52 @@ module.exports.removeSession = function (session) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*Users*/
 | 
			
		||||
 | 
			
		||||
module.exports.checkUser = function (token) {
 | 
			
		||||
    
 | 
			
		||||
    for(var user of users) {
 | 
			
		||||
            
 | 
			
		||||
        if(user[1].token.includes(token)) {
 | 
			
		||||
    
 | 
			
		||||
            return true
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.getUser = function (token) {
 | 
			
		||||
    
 | 
			
		||||
        for(var user of users) {
 | 
			
		||||
                
 | 
			
		||||
            if(user[1].token.includes(token)) {
 | 
			
		||||
        
 | 
			
		||||
                return user[1]
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    
 | 
			
		||||
        return null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.getUsers = function () {
 | 
			
		||||
 | 
			
		||||
    const userDB = JSON.parse(fs.readFileSync(__glob.USERS))
 | 
			
		||||
    const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
    return userDB
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.getUsersList = function () {
 | 
			
		||||
module.exports.getSimpleUsers = function () {
 | 
			
		||||
 | 
			
		||||
    var userList = new Array()
 | 
			
		||||
    const userDB = JSON.parse(fs.readFileSync(__glob.USERS))
 | 
			
		||||
    const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
 | 
			
		||||
    for(var user of userDB) {
 | 
			
		||||
 | 
			
		||||
        userList.push({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id, "admin": user.admin})
 | 
			
		||||
        userList.push({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id, "admin": user.admin, "picture": user.picture})
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -180,32 +174,20 @@ module.exports.getUsersList = function () {
 | 
			
		||||
 | 
			
		||||
module.exports.getSimpleUser = function (token) {
 | 
			
		||||
 | 
			
		||||
    var user = users.get(token)
 | 
			
		||||
    const user = this.getUser(token)
 | 
			
		||||
 | 
			
		||||
    if(!user) {
 | 
			
		||||
 | 
			
		||||
        return null
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return ({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id, "admin": user.admin})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.getUser = function (token) {
 | 
			
		||||
    return users.get(token)
 | 
			
		||||
    return ({"username": user.user.username, "global_name":user.user.global_name, "avatar": user.user.avatar, "id": user.user.id, "admin": user.admin, "picture": user.picture})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.addUser = function (user) {
 | 
			
		||||
 | 
			
		||||
    if(!fs.existsSync(__glob.USERS)){
 | 
			
		||||
 | 
			
		||||
        fs.writeFileSync(__glob.USERS, '[]')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    const userDB = JSON.parse(fs.readFileSync(__glob.USERS))
 | 
			
		||||
    const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    var selectedUser = null
 | 
			
		||||
@@ -229,21 +211,63 @@ module.exports.addUser = function (user) {
 | 
			
		||||
 | 
			
		||||
        userDB.push(user)        
 | 
			
		||||
    }
 | 
			
		||||
    fs.writeFileSync(__glob.USERS, JSON.stringify(userDB, null, 2))
 | 
			
		||||
 | 
			
		||||
    saveUsersFile( userDB)
 | 
			
		||||
    var OPdest = __glob.PICTURE_DIR + "/" + user.user.id + ".png"
 | 
			
		||||
    if (fs.existsSync(OPdest)) {
 | 
			
		||||
        fs.rmSync(OPdest);
 | 
			
		||||
    }
 | 
			
		||||
    checkAllPictures()
 | 
			
		||||
    updateUsers()
 | 
			
		||||
    alog.log("Ajout de " + user.user.username + " en tant qu'utilisateur avec le token : " + user.token)
 | 
			
		||||
 | 
			
		||||
}  
 | 
			
		||||
 | 
			
		||||
module.exports.removeUser = function (token) {
 | 
			
		||||
 | 
			
		||||
    const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
    var selectedUser = null
 | 
			
		||||
    for (const user of userDB) {
 | 
			
		||||
        if(user.token == token) {
 | 
			
		||||
 | 
			
		||||
            selectedUser = user
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    const index = userDB.indexOf(selectedUser)
 | 
			
		||||
    alog.log("Supression de " + selectedUser.user.username + " en tant qu'utilisateur avec le token : " + selectedUser.token)
 | 
			
		||||
 | 
			
		||||
    userDB.splice(index, 1)
 | 
			
		||||
    saveUsersFile(userDB)
 | 
			
		||||
 | 
			
		||||
    updateUsers()
 | 
			
		||||
    
 | 
			
		||||
}  
 | 
			
		||||
 | 
			
		||||
module.exports.removeToken = function (token) {
 | 
			
		||||
    
 | 
			
		||||
        const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
        var selectedUser = null
 | 
			
		||||
        for (const user of userDB) {
 | 
			
		||||
            var usersTokens = user.token
 | 
			
		||||
            if(usersTokens.includes(token)) {
 | 
			
		||||
    
 | 
			
		||||
                selectedUser = user
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        const index = userDB.indexOf(selectedUser)
 | 
			
		||||
        alog.log("Supression du token de " + selectedUser.user.username + " en tant qu'utilisateur avec le token : " + selectedUser.token)
 | 
			
		||||
    
 | 
			
		||||
        const tokens = selectedUser.token
 | 
			
		||||
        tokens.splice(tokens.indexOf(token), 1)
 | 
			
		||||
 | 
			
		||||
        saveUsersFile(userDB)
 | 
			
		||||
    
 | 
			
		||||
        updateUsers()
 | 
			
		||||
        
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.setAdmin = function (user) {
 | 
			
		||||
 | 
			
		||||
    if(!fs.existsSync(__glob.USERS)){
 | 
			
		||||
 | 
			
		||||
        fs.writeFileSync(__glob.USERS, '[]')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const userDB = JSON.parse(fs.readFileSync(__glob.USERS))
 | 
			
		||||
    const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
 | 
			
		||||
    var selectedUser = null
 | 
			
		||||
 | 
			
		||||
@@ -268,7 +292,7 @@ module.exports.setAdmin = function (user) {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    fs.writeFileSync(__glob.USERS, JSON.stringify(userDB, null, 2))
 | 
			
		||||
    saveUsersFile(userDB)
 | 
			
		||||
 | 
			
		||||
    updateUsers()
 | 
			
		||||
    alog.log("Ajout de " + user.user.username + " en tant qu'administrateur avec le token : " + user.token)
 | 
			
		||||
@@ -277,40 +301,8 @@ module.exports.setAdmin = function (user) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.removeUser = function (token) {
 | 
			
		||||
 | 
			
		||||
    if(!fs.existsSync(__glob.USERS)){
 | 
			
		||||
 | 
			
		||||
        fs.writeFileSync(__glob.USERS, '[]')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    const userDB = JSON.parse(fs.readFileSync(__glob.USERS))
 | 
			
		||||
    var selectedUser = null
 | 
			
		||||
    for (const user of userDB) {
 | 
			
		||||
        if(user.token == token) {
 | 
			
		||||
 | 
			
		||||
            selectedUser = user
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    const index = userDB.indexOf(selectedUser)
 | 
			
		||||
    alog.log("Supression de " + selectedUser.user.username + " en tant qu'utilisateur avec le token : " + selectedUser.token)
 | 
			
		||||
 | 
			
		||||
    userDB.splice(index, 1)
 | 
			
		||||
    fs.writeFileSync(__glob.USERS, JSON.stringify(userDB, null, 2))
 | 
			
		||||
 | 
			
		||||
    updateUsers()
 | 
			
		||||
    
 | 
			
		||||
}  
 | 
			
		||||
 | 
			
		||||
function updateUsers() {
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    if(!fs.existsSync(__glob.BETA_USERS)){
 | 
			
		||||
 | 
			
		||||
        fs.writeFileSync(__glob.BETA_USERS, '[]')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(!fs.existsSync(__glob.USERS)){
 | 
			
		||||
 | 
			
		||||
@@ -318,19 +310,75 @@ function updateUsers() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    const userDB = JSON.parse(fs.readFileSync(__glob.USERS))
 | 
			
		||||
    const betausersDB = JSON.parse(fs.readFileSync(__glob.BETA_USERS))
 | 
			
		||||
 | 
			
		||||
    const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    for (const user of userDB) {
 | 
			
		||||
        
 | 
			
		||||
        users.set(user.token, user)
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (const id of betausersDB) {
 | 
			
		||||
        
 | 
			
		||||
        betausers.push(id)
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    alog.log("Actualisation de " + userDB.length + " utilisateurs depuis : " + __glob.USERS)
 | 
			
		||||
    alog.log("Actualisation de " + betausersDB.length + " utilisateurs bêtas depuis : " + __glob.BETA_USERS)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function readUsersFile(file) {
 | 
			
		||||
 | 
			
		||||
    return JSON.parse(fs.readFileSync(file, 'utf8'))
 | 
			
		||||
    
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
function saveUsersFile(data) {    
 | 
			
		||||
 | 
			
		||||
    fs.writeFileSync(__glob.USERS, JSON.stringify(data, null, 2))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function checkAllPictures() {
 | 
			
		||||
 | 
			
		||||
    const userDB = readUsersFile(__glob.USERS)
 | 
			
		||||
 | 
			
		||||
    for (const user of userDB) {
 | 
			
		||||
 | 
			
		||||
        if(!fs.existsSync(__glob.PICTURE_DIR + "/" + user.user.id + ".png")) {
 | 
			
		||||
 | 
			
		||||
            userDB[userDB.indexOf(user)].picture = "/userspictures/" + user.user.id + ".png"
 | 
			
		||||
 | 
			
		||||
            downloadPicture(`https://cdn.discordapp.com/avatars/${user.user.id}/${user.user.avatar}`, __glob.PICTURE_DIR + "/" + user.user.id + ".png")
 | 
			
		||||
           
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    saveUsersFile(userDB)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const ilog = new LogType("ImageDownloader")
 | 
			
		||||
 | 
			
		||||
function downloadPicture(url, dest) {
 | 
			
		||||
    const fs = require('fs');
 | 
			
		||||
    const request = require('request');
 | 
			
		||||
    //Check if path exist and delete it
 | 
			
		||||
    if (fs.existsSync(dest)) {
 | 
			
		||||
        fs.rmSync(dest);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const download = (url, path, callback) => {
 | 
			
		||||
        request.head(url, (err, res, body) => {
 | 
			
		||||
            request(url)
 | 
			
		||||
                .pipe(fs.createWriteStream(path))
 | 
			
		||||
                .on('close', callback)
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    download(url, dest, () => {
 | 
			
		||||
        // Say for each user that the picture is downloaded
 | 
			
		||||
        ilog.log("Picture downloaded for " + dest)
 | 
			
		||||
 | 
			
		||||
        process.emit("UPDATE_SELF")
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
 | 
			
		||||
const { __glob } = require("../modules/global-variables");
 | 
			
		||||
const { LogType } = require('./sub-log');
 | 
			
		||||
const { LogType } = require('loguix');
 | 
			
		||||
const discord = require("./discord-bot")
 | 
			
		||||
 | 
			
		||||
const dlog = new LogType("Queue-List")
 | 
			
		||||
@@ -12,10 +12,6 @@ var shuffle = false
 | 
			
		||||
 | 
			
		||||
module.exports.List = class {
 | 
			
		||||
 | 
			
		||||
    constructor() { 
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getList() {
 | 
			
		||||
 | 
			
		||||
        return next
 | 
			
		||||
@@ -48,8 +44,6 @@ module.exports.List = class {
 | 
			
		||||
            return song
 | 
			
		||||
           
 | 
			
		||||
        } else {
 | 
			
		||||
 | 
			
		||||
           
 | 
			
		||||
            const randomIndex = Math.floor(Math.random() * next.length);
 | 
			
		||||
            const song = next[randomIndex]
 | 
			
		||||
            next.splice(randomIndex, 1)
 | 
			
		||||
@@ -194,32 +188,12 @@ module.exports.List = class {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async fpPlaylistAdd(playlist, client) {
 | 
			
		||||
 | 
			
		||||
        let player = client.manager.players.get("137291455336022018")
 | 
			
		||||
 | 
			
		||||
            for(var song of playlist.videos) {
 | 
			
		||||
        
 | 
			
		||||
                const song_finded = await client.manager.search(song.url)
 | 
			
		||||
                next.push(song_finded.tracks[0])
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if(!player.playing) {
 | 
			
		||||
 | 
			
		||||
               player.play(next[0])
 | 
			
		||||
               this.remove(next[0])
 | 
			
		||||
            
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            process.emit("MUSIC_UPDATE_STATE")
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async playlistAdd(playlist, interaction, userId, ) {
 | 
			
		||||
 | 
			
		||||
        if(interaction) {
 | 
			
		||||
        var client = discord.getClient()
 | 
			
		||||
        let player = client.manager.players.get("137291455336022018")
 | 
			
		||||
 | 
			
		||||
            const client = interaction.client
 | 
			
		||||
        if(interaction) {
 | 
			
		||||
 | 
			
		||||
            var author = "Artiste inconnu !"
 | 
			
		||||
 | 
			
		||||
@@ -240,35 +214,22 @@ module.exports.List = class {
 | 
			
		||||
            .setTimestamp();
 | 
			
		||||
 | 
			
		||||
            interaction.reply({embeds: [embed]})
 | 
			
		||||
            player = client.manager.players.get(interaction.guild.id)
 | 
			
		||||
 | 
			
		||||
            let player = client.manager.players.get(interaction.guild.id)
 | 
			
		||||
            userId = interaction.member.user.id
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
            for(var song of playlist.videos) {
 | 
			
		||||
        
 | 
			
		||||
                if(song.uri) {
 | 
			
		||||
                    song.url = song.uri
 | 
			
		||||
                } 
 | 
			
		||||
                const song_finded = await client.manager.search(song.url)
 | 
			
		||||
                next.push(song_finded.tracks[0])
 | 
			
		||||
 | 
			
		||||
                process.emit("MUSIC_UPDATE_STATE")
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if(!player.playing) {
 | 
			
		||||
 | 
			
		||||
               player.play(next[0])
 | 
			
		||||
               this.remove(next[0])
 | 
			
		||||
            
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
           
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            var client = null
 | 
			
		||||
 | 
			
		||||
            if(!client) {
 | 
			
		||||
 | 
			
		||||
                client = discord.getClient()
 | 
			
		||||
            }
 | 
			
		||||
        
 | 
			
		||||
            let player = client.manager.players.get("137291455336022018")
 | 
			
		||||
        
 | 
			
		||||
            if(!player) { 
 | 
			
		||||
 | 
			
		||||
                var channelId = discord.getMemberVoices().get(userId)
 | 
			
		||||
@@ -288,21 +249,18 @@ module.exports.List = class {
 | 
			
		||||
        
 | 
			
		||||
                player.connect();
 | 
			
		||||
            }
 | 
			
		||||
        
 | 
			
		||||
            for(var song of playlist) {
 | 
			
		||||
    
 | 
			
		||||
                const song_finded = await client.manager.search(song.uri)
 | 
			
		||||
                next.push(song_finded.tracks[0])
 | 
			
		||||
                process.emit("MUSIC_UPDATE_STATE")
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            if(!player.playing) {
 | 
			
		||||
 | 
			
		||||
               player.play(next[0])
 | 
			
		||||
               this.remove(next[0])
 | 
			
		||||
            
 | 
			
		||||
                player.play(next[0])
 | 
			
		||||
                this.remove(next[0])
 | 
			
		||||
             
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
          
 | 
			
		||||
 | 
			
		||||
           
 | 
			
		||||
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,217 +0,0 @@
 | 
			
		||||
const fs = require("fs")
 | 
			
		||||
const path = require("path")
 | 
			
		||||
 | 
			
		||||
var logStream = null
 | 
			
		||||
var logInstance = new Map()
 | 
			
		||||
 | 
			
		||||
setup()
 | 
			
		||||
 | 
			
		||||
function getDate(formated) {
 | 
			
		||||
 | 
			
		||||
    var date = new Date()
 | 
			
		||||
 | 
			
		||||
    // [Date Format] - Format de la date
 | 
			
		||||
 | 
			
		||||
    var gmonth = date.getMonth()
 | 
			
		||||
    var gday = date.getDate()
 | 
			
		||||
    var gHour = date.getHours()
 | 
			
		||||
    var gMinute = date.getMinutes()
 | 
			
		||||
    var gSecondes = date.getSeconds()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if(date.getMonth() + 1 <= 10) {
 | 
			
		||||
        gmonth = "0" + (date.getMonth() + 1)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(date.getDate() + 1 <= 10) {
 | 
			
		||||
        gday = "0" + date.getDate()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(date.getHours() + 1 <= 10) {
 | 
			
		||||
        gHour = "0" + date.getHours()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(date.getMinutes() + 1 <= 10) {
 | 
			
		||||
        gMinute = "0" + date.getMinutes()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(date.getSeconds() + 1 <= 10) {
 | 
			
		||||
        gSecondes = "0" + date.getSeconds()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(!formated) {
 | 
			
		||||
        return gday + "/" + gmonth +  " - " + gHour + "h"  + "-" + gMinute + "m" + "-" + gSecondes + "s" 
 | 
			
		||||
    } else {
 | 
			
		||||
        return date.getFullYear() + "-" + gmonth + "-" + gday + "-" + gHour + "h"  + "-" + gMinute + "m" + "-" + gSecondes + "s" 
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function setup() {
 | 
			
		||||
 | 
			
		||||
    if(!fs.existsSync(__dirname + path.sep + "logs" + path.sep)) { 
 | 
			
		||||
        fs.mkdir(__dirname + path.sep + "logs", (err) => {
 | 
			
		||||
            if(!err) {
 | 
			
		||||
               
 | 
			
		||||
 | 
			
		||||
                console.log("[Logs] - Dossier de logs crée ! !")
 | 
			
		||||
 
 | 
			
		||||
            } else {
 | 
			
		||||
 | 
			
		||||
                console.log("[Logs] -Erreur d'écriture par manque de permission ")
 | 
			
		||||
                console.log(err)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        })
 | 
			
		||||
    
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    logStream = fs.createWriteStream(__dirname + path.sep + "logs" + path.sep + getDate(true) + ".log", {
 | 
			
		||||
        flags: 'a'
 | 
			
		||||
    });
 | 
			
		||||
    
 | 
			
		||||
  
 | 
			
		||||
    logStream.write("[" + require("../../package.json").name + "@"+ require("../../package.json").version + "] - [" + getDate(true) + "]" + "\n")
 | 
			
		||||
    logStream.write("Subsonics-Web by Raphix" + "\n")
 | 
			
		||||
    logStream.write("----------------------------------------------------------------" + "\n")
 | 
			
		||||
 | 
			
		||||
    process.on('uncaughtException', (err) => {
 | 
			
		||||
        console.error("["+ "FATAL" + "] - The application has encountered an error ! Please Restart ! #E = " + err + "\n")
 | 
			
		||||
        console.error(err)
 | 
			
		||||
        logStream.write("[" + getDate() + "] - ["+ "FATAL" + "] - The application has encountered an error ! Please Restart ! #E = " + err + "\n")
 | 
			
		||||
        logStream.end( "["+ "UNCAUGHT_EXCEPTION" + "]" + " - [END OF LOGS] - [" + getDate()  + ']')
 | 
			
		||||
        logStream.close()
 | 
			
		||||
         
 | 
			
		||||
    });
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    process.on('beforeExit', (err) => {
 | 
			
		||||
        logStream.end( "["+ "BEFORE_EXIT" + "]" + " - [END OF LOGS] - [" + getDate(true)  + ']')
 | 
			
		||||
        logStream.close()
 | 
			
		||||
         
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.getInstance = function (name) {
 | 
			
		||||
 | 
			
		||||
    if(logInstance.has(name)) {
 | 
			
		||||
 | 
			
		||||
        return logInstance.get(name)
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
 | 
			
		||||
        var logtext = "[Logs] - [ERROR] - '" + name +  "' n'est pas enregistré en tant qu'instance de log !"
 | 
			
		||||
        logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
        console.log(logtext)
 | 
			
		||||
 | 
			
		||||
        return null
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.LogType = class {
 | 
			
		||||
 | 
			
		||||
    constructor(typeName) {
 | 
			
		||||
        this.type = typeName;
 | 
			
		||||
        this.steps = new Map()
 | 
			
		||||
        this.step = this.initializeStep()
 | 
			
		||||
        logInstance.set(typeName, this)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    log(txt) {
 | 
			
		||||
 | 
			
		||||
       
 | 
			
		||||
        
 | 
			
		||||
        var logtext = "[" + this.type + "] - [INFO] - " + txt
 | 
			
		||||
        logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
        console.log(logtext)
 | 
			
		||||
        
 | 
			
		||||
    
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    warn(txt) {
 | 
			
		||||
        
 | 
			
		||||
        var logtext = "[" + this.type + "] - [WARN] - " + txt
 | 
			
		||||
        logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
        console.log(logtext)
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    error(txt) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        var logtext = "[" + this.type + "] - [ERROR] - " + txt
 | 
			
		||||
        logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
        console.log(logtext)
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
       
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    initializeStep() {
 | 
			
		||||
        const parent = this;
 | 
			
		||||
        return { 
 | 
			
		||||
            init: function(id, desc) {
 | 
			
		||||
                parent.steps.set(id, desc)
 | 
			
		||||
                var logtext = "[" + parent.type + "] - [INFO] - [STEP] - " + desc + " - En cours ..."
 | 
			
		||||
                logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
                console.log(logtext)
 | 
			
		||||
            
 | 
			
		||||
            },
 | 
			
		||||
            end: function(id) {
 | 
			
		||||
                
 | 
			
		||||
                if(parent.steps.has(id)) {
 | 
			
		||||
                    
 | 
			
		||||
                    var logtext = "[" + parent.type + "] - [INFO] - [STEP] - " + parent.steps.get(id) + " - Terminé !"
 | 
			
		||||
                    logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
                    console.log(logtext)
 | 
			
		||||
                    parent.steps.delete(id)
 | 
			
		||||
                } else {
 | 
			
		||||
                    
 | 
			
		||||
                    var logtext = "[" + parent.type + "] - [WARN] - [STEP] - '" + id +  "' n'est pas enregistré en tant qu'étape !"
 | 
			
		||||
                    logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
                    console.log(logtext)
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            
 | 
			
		||||
            },
 | 
			
		||||
            error: function(id, errorDesc) {
 | 
			
		||||
 | 
			
		||||
                if(parent.steps.has(id)) {
 | 
			
		||||
                   
 | 
			
		||||
                    var logtext = "[" + parent.type + "] - [ERROR] - [STEP] - " + parent.steps.get(id) + " - Une erreur a été rencontré dans l'étape ! : #E = " + errorDesc
 | 
			
		||||
                    logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
                    console.log(logtext)
 | 
			
		||||
                    parent.steps.delete(id)
 | 
			
		||||
                } else {
 | 
			
		||||
                    
 | 
			
		||||
                    var logtext = "[" + parent.type + "] - [WARN] - [STEP] - '" + id +  "' n'est pas enregistré en tant qu'étape !"
 | 
			
		||||
                    logStream.write("[" + getDate() + "] - " + logtext + "\n")
 | 
			
		||||
                    console.log(logtext)
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
const { SlashCommandBuilder, EmbedBuilder, DefaultWebSocketManagerOptions, discordSort } = require("discord.js");
 | 
			
		||||
const { __glob } = require("../modules/global-variables");
 | 
			
		||||
const { LogType } = require("./sub-log");
 | 
			
		||||
const { LogType } = require("loguix");
 | 
			
		||||
var { List } = require("./sub-list")
 | 
			
		||||
const discord = require("./discord-bot")
 | 
			
		||||
var ytfps = require("ytfps");
 | 
			
		||||
const packageJson = require(__glob.PACKAGE);
 | 
			
		||||
 | 
			
		||||
const { Metric } = require("webmetrik");
 | 
			
		||||
 | 
			
		||||
const list = new List()
 | 
			
		||||
 | 
			
		||||
@@ -61,8 +61,8 @@ module.exports.play = async function (client, interaction) {
 | 
			
		||||
                    .setColor(0x15e6ed)
 | 
			
		||||
                    .setTitle('**Lecture de : **' + songs.tracks[0].title)
 | 
			
		||||
                    .setDescription('**Demandé par **' + interaction.member.user.username)
 | 
			
		||||
                    .addFields({name: "Auteur", value: son.tracks[0].author},
 | 
			
		||||
                               {name: "URL", value:songs.tragscks[0].uri})
 | 
			
		||||
                    .addFields({name: "Auteur", value: songs.tracks[0].author},
 | 
			
		||||
                               {name: "URL", value: songs.tracks[0].uri})
 | 
			
		||||
                    .setThumbnail(songs.tracks[0].thumbnail)
 | 
			
		||||
                    .setTimestamp();
 | 
			
		||||
        
 | 
			
		||||
@@ -79,14 +79,11 @@ module.exports.play = async function (client, interaction) {
 | 
			
		||||
            
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
 | 
			
		||||
            // [A FINIR POUR WEB]
 | 
			
		||||
    }
 | 
			
		||||
        playStats(interaction.member.user.username)
 | 
			
		||||
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
   
 | 
			
		||||
    process.emit("MUSIC_UPDATE_STATE")
 | 
			
		||||
        
 | 
			
		||||
}
 | 
			
		||||
@@ -193,72 +190,20 @@ module.exports.getState = function(client, interaction) {
 | 
			
		||||
module.exports.playPlaylist = function (id, data) {
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    list.playlistAdd(data, null, id)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.SPECIAL_MJ = async function (client, userId) {
 | 
			
		||||
 | 
			
		||||
    if(!client) {
 | 
			
		||||
 | 
			
		||||
        client = discord.getClient()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let player = client.manager.players.get("137291455336022018")
 | 
			
		||||
 | 
			
		||||
    var memberVoices = discord.getMemberVoices()
 | 
			
		||||
    var channelId = memberVoices.get(userId)
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    if(!channelId) {
 | 
			
		||||
        
 | 
			
		||||
        channelId = "664355808250953739"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(!player) { 
 | 
			
		||||
            
 | 
			
		||||
        player = client.manager.create({
 | 
			
		||||
            guild: "137291455336022018",
 | 
			
		||||
            voiceChannel: channelId,
 | 
			
		||||
            textChannel: "664355637685256203",
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        player.connect();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    const songs = await client.manager.search("Earth MJ")
 | 
			
		||||
    const songs2 = await client.manager.search("https://www.youtube.com/watch?v=_mwsc6xqb3w")
 | 
			
		||||
    const songs3 = await client.manager.search("https://www.youtube.com/watch?v=IdjgmRa3k-g")
 | 
			
		||||
 | 
			
		||||
    if(!player.playing) {
 | 
			
		||||
        player.play(songs.tracks[0])
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
        
 | 
			
		||||
        list.add(songs.tracks[0])
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
    list.add(songs2.tracks[0])
 | 
			
		||||
    list.add(songs3.tracks[0])
 | 
			
		||||
    const playlist = {}
 | 
			
		||||
    playlist.videos = data
 | 
			
		||||
    list.playlistAdd(playlist, null, id)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.addSong = async function (data, client, userId, quick, playlist) {
 | 
			
		||||
 | 
			
		||||
    if(!client) {
 | 
			
		||||
module.exports.addSong = async function (data, userId, quick, playlist) {
 | 
			
		||||
 | 
			
		||||
        client = discord.getClient()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    var client = discord.getClient()
 | 
			
		||||
    
 | 
			
		||||
    let player = client.manager.players.get("137291455336022018")
 | 
			
		||||
 | 
			
		||||
    var memberVoices = discord.getMemberVoices()
 | 
			
		||||
@@ -315,41 +260,15 @@ module.exports.addSong = async function (data, client, userId, quick, playlist)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.addSongsFromPlaylist = async function (data, client, userId, quick, playlist) {
 | 
			
		||||
module.exports.addSongsFromPlaylist = async function (data, userId) {
 | 
			
		||||
 | 
			
		||||
    if(!client) {
 | 
			
		||||
 | 
			
		||||
        client = discord.getClient()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let player = client.manager.players.get("137291455336022018")
 | 
			
		||||
 | 
			
		||||
    var memberVoices = discord.getMemberVoices()
 | 
			
		||||
    var channelId = memberVoices.get(userId)
 | 
			
		||||
 | 
			
		||||
    if(!channelId) {
 | 
			
		||||
        
 | 
			
		||||
        channelId = "664355808250953739"
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(!player) { 
 | 
			
		||||
            
 | 
			
		||||
        player = client.manager.create({
 | 
			
		||||
            guild: "137291455336022018",
 | 
			
		||||
            voiceChannel: channelId,
 | 
			
		||||
            textChannel: "664355637685256203",
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        player.connect();
 | 
			
		||||
    }
 | 
			
		||||
   
 | 
			
		||||
 | 
			
		||||
    var playlist = await checkPlaylist(data)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if(playlist) {
 | 
			
		||||
 | 
			
		||||
        list.fpPlaylistAdd(playlist, client)
 | 
			
		||||
        list.playlistAdd(playlist, null, userId)
 | 
			
		||||
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
@@ -834,3 +753,9 @@ async function checkPlaylist (song_name) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function playStats(username) {
 | 
			
		||||
    var userMusicPlayed = new Metric("userMusicPlayed_" + username, "Nombre de musiques jouées par l'utilisateur : " + username)
 | 
			
		||||
    userMusicPlayed.setValue(userMusicPlayed.getValue() + 1)
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
@@ -1,11 +1,8 @@
 | 
			
		||||
const { SlashCommandBuilder, EmbedBuilder, DefaultWebSocketManagerOptions, discordSort } = require("discord.js");
 | 
			
		||||
const { __glob } = require("../modules/global-variables");
 | 
			
		||||
const { LogType } = require("./sub-log");
 | 
			
		||||
var { List } = require("./sub-list")
 | 
			
		||||
const discord = require("./discord-bot")
 | 
			
		||||
const { LogType } = require("loguix");
 | 
			
		||||
const subplayer = require("./sub-player")
 | 
			
		||||
const fs = require("fs");
 | 
			
		||||
const { type } = require("os");
 | 
			
		||||
var playlists = {}
 | 
			
		||||
const plog = new LogType("Playlist-Manager")
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
const { __glob } = require("../modules/global-variables");
 | 
			
		||||
const { LogType } = require("./sub-log");
 | 
			
		||||
const { LogType } = require("loguix");
 | 
			
		||||
var { List } = require("./sub-list")
 | 
			
		||||
const discord = require("./discord-bot")
 | 
			
		||||
const subplayer = require("./sub-player")
 | 
			
		||||
@@ -8,19 +8,19 @@ const { type } = require("os");
 | 
			
		||||
var radios = []
 | 
			
		||||
const plog = new LogType("Radio-Manager")
 | 
			
		||||
 | 
			
		||||
check()
 | 
			
		||||
checkRadioFile()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.get = function () {
 | 
			
		||||
 | 
			
		||||
    check()
 | 
			
		||||
    checkRadioFile()
 | 
			
		||||
    return radios
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.add = function (data) {
 | 
			
		||||
    
 | 
			
		||||
    var radios_data = JSON.parse(fs.readFileSync(__glob.RADIO))
 | 
			
		||||
    var radios_data = readRadioFile()
 | 
			
		||||
            
 | 
			
		||||
    radios_data.push(data)
 | 
			
		||||
    fs.writeFileSync(__glob.RADIO, JSON.stringify(radios_data, null, 2))
 | 
			
		||||
@@ -31,7 +31,7 @@ module.exports.add = function (data) {
 | 
			
		||||
 | 
			
		||||
module.exports.remove = function(data) {
 | 
			
		||||
 | 
			
		||||
            var radios_data = JSON.parse(fs.readFileSync(__glob.RADIO))
 | 
			
		||||
            var radios_data = readRadioFile()
 | 
			
		||||
 | 
			
		||||
            var radIndex = -1
 | 
			
		||||
 | 
			
		||||
@@ -48,11 +48,26 @@ module.exports.remove = function(data) {
 | 
			
		||||
 | 
			
		||||
            radios_data.splice(radIndex, 1)
 | 
			
		||||
            
 | 
			
		||||
            fs.writeFileSync(__glob.RADIO, JSON.stringify(radios_data, null, 2))
 | 
			
		||||
           saveRadioFile(radios_data)
 | 
			
		||||
           
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function check() {
 | 
			
		||||
function saveRadioFile(data) {
 | 
			
		||||
 | 
			
		||||
    fs.writeFileSync(__glob.RADIO, JSON.stringify(data, null, 2))
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
function readRadioFile() {
 | 
			
		||||
 | 
			
		||||
    if(fs.existsSync(__glob.RADIO)) {
 | 
			
		||||
            
 | 
			
		||||
        return JSON.parse(fs.readFileSync(__glob.RADIO))
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function checkRadioFile() {
 | 
			
		||||
 | 
			
		||||
    if(fs.existsSync(__glob.RADIO)) {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user