Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • cd8f0c2ae6158a74556a42aa2b7de81e7b1ca11a
  • main par défaut protégée
2 résultats

corps.js

Blame
  • Duplication à partir d'un projet inaccessible.
    corps.js 2,39 Kio
    const help = require('./help');
    
    let map = new Map();
    let copy = new Map();
    
    
    
    /**
     * @param {string} cmdName
     */
    function handleCommand(message, cmdName, args) {
    
        switch (cmdName) {
    
            case "help" :
                message.channel.send(help);
                break;
    
            case "list":
            case "liste":
                list(message);
                break;
            
            case "add" :
                add(args, message);
                break;
    
            case "remove" :
                remove(args, message);
                break;
    
            case "clear":
                clear(message);
                break;
            
            case "backup":
                backup(message);
                break;
            
            default:
                message.channel.send("Commande non définie.")
                break;
        }
    }
    
    function list(message){
        if (map.size === 0) return message.channel.send("La liste est vide.");
        let rep ="";
        for (const [key, value] of map)
            rep += `**${value}** ${key}\n`;
        message.channel.send(rep);
    }
    
    /**
     * @param {Array<string>} args
     */
    function add(args, message){
        const articles = args.join(" ").split(/;\s*/); //propre
        for (let article of articles) {
            if (article === "") continue;
            const matches = article.match(/^\s*(\d+)\s+(.*)/); //très propre
            let nb = 1;
            if (matches !== null) {
                nb = parseInt(matches[1]);
                article = matches[2];
            }
            
            const nombreInit = map.get(article) ?? 0;
            map.set(article,nombreInit + nb);
        }
        message.channel.send("Vos articles ont bien été ajoutés."); 
    }
    
    function remove(args, message){
    
        if (map.size === 0) return message.channel.send("La liste est vide.");
    
        const articles = args.join(" ").split(/;\s*/); //propre
    
        for (let article of articles) {
            if (article === "") continue;
            if (!map.has(article)) return message.channel.send(`${article} n'est pas trouvé dans la liste`);
            map.delete(article);
        }
        message.channel.send("Vos articles ont bien été retirés.");    
    }
    
    
    function clear(message){
        if (map.size === 0) return message.channel.send("La liste est déjà vide.");
        copy = new Map([...map]);
        map.clear();
        message.channel.send("La liste a bien été supprimmée.");
    }
    
    function backup(message){
        map = new Map([...copy]);
        copy.clear();
        message.channel.send("Le backup a bien été effectué.");
    }
    
    
    module.exports = handleCommand ;