Sélectionner une révision Git
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 ;