la-cosa-nostra
Version:
A Mafia bot designed to run in Discord - beware the traitors and the lies!
68 lines (43 loc) • 1.63 kB
JavaScript
var logger = process.logger;
var auxils = require("../auxils.js");
var attributes = require("../attributes.js");
module.exports = async function (message, params, config) {
if (!process.timer || !["playing"].includes(process.timer.game.state)) {
await message.channel.send(":x: No game in progress.");
return null;
};
var game = process.timer.game;
if (params.length < 2) {
await message.channel.send(":x: Wrong syntax! Please use `" + config["command-prefix"] + "addattribute <id> <attribute> [expiry=Infinity] [tags]` instead!");
return null;
};
var player = game.getPlayerById(params[0]);
if (!player) {
await message.channel.send(":x: Invalid player.");
return null;
};
var attribute = attributes[params[1]];
if (!attribute) {
await message.channel.send(":x: Invalid attribute identifier `" + attribute + "`!");
return null;
};
var expiry = (!params[2] || params[2].toLowerCase() === "infinity") ? Infinity : parseInt(params[2]);
if (isNaN(expiry)) {
await message.channel.send(":x: Invalid expiry!");
return null;
};
var json_string = params.splice(3, Infinity);
if (json_string.length >= 1) {
try {
var tags = JSON.parse(json_string);
} catch (err) {
logger.logError(err);
await message.channel.send(":x: Invalid JSON tags string.");
return null;
};
} else {
var tags = undefined;
};
player.addAttribute(params[1], expiry, tags);
await message.channel.send(":ok: Added attribute `" + params[1] +"` with a cycle-expiry of `" + expiry + "` to **" + player.getDisplayName() + "**.");
};