import { Discord, fs } from "../main"; import { player } from "../scripts/enums"; import { raceText, capitalize, randomInt } from "../scripts/functions"; //===Data stored for use, such as class, race, and last names=== let processes: any = { "test": { title: "Test", description: "For testing", args: "", run: (msg: any, data: player, args: string[], file: any) => encounter() }, "help": { title: "Help", description: "Show a description of a command", args: "**command** - the command you'd like to know more about", run: (msg: any, data: player, args: string[], file: any) => help(msg, args) }, "list": { title: "List", description: "List all commands", args: "", run: (msg: any, data: player, args: string[], file: any) => list(msg) }, "read": { title: "Read", description: "Read a description of your squirrel", args: "", run: (msg: any, data: player, args: string[], file: any) => read(msg, data) }, "namechange": { title: "Namechange", description: "Change the name of your squirrel, can only be used at level 1", args: "**name** - the new name for your squirrel", run: (msg: any, data: player, args: string[], file: any) => nameChange(msg, data, args, file) }, "races": { title: "Races", description: "List all the races", args: "", run: (msg: any, data: player, args: string[], file: any) => printRaces(msg) }, "classes": { title: "Classes", description: "List all the classes", args: "", run: (msg: any, data: player, args: string[], file: any) => printClasses(msg) }, } //===COMMAND FUNCTIONS== function help(msg: any, args: string[]): void { let argument: string = args[0].toLowerCase(); if (argument === "") { msg.reply(`Please provide a command, like "!help help", or "!help races"\nAlternatively type "!list" for a list of commands`); } else if (processes.hasOwnProperty(argument)) { let embed = new Discord.RichEmbed() .setTitle(processes[argument].title) .setColor(COLOR) .setDescription(processes[argument].description); if (processes[argument].args === "") { embed.addField("Arguments:", `This command has no arguments`); } else { embed.addField("Arguments:", processes[argument].args); } msg.channel.send(embed); } else { msg.reply(`That command does not exist`); } } function list(msg: any): void { let embed = new Discord.RichEmbed() .setTitle("List of Commands") .setColor(COLOR); let description: string = ""; Object.keys(processes).forEach(process => { description += `**${processes[process].title}:** ${processes[process].description}.\n`; }); embed.setDescription(description); msg.author.send(embed); } function read(msg: any, data: player): void { let embed = new Discord.RichEmbed() .setTitle(msg.author.username) .setColor(COLOR) .setThumbnail(msg.author.avatarURL) .setDescription("Squirrel Info") .addField("Name", data.name) .addField("Race", raceText(data.race)) .addField("Class", capitalize(data.class)) .addField("Nuts", data.nuts) .addField("Level", data.level); if (data.dm === true) embed.addField("DM Points", data.dm_points); msg.channel.send(embed); } function nameChange(msg: any, data: player, args: string[], file: any): void { if (data.level == 1) { if (args.length >= 1) { data.name = capitalize(args[0]) + " " + data.name.split(' ')[1]; fs.writeFileSync(file, JSON.stringify(data)); msg.reply(`Name changed to ${data.name}`); } else { msg.reply(`Please provide a name`); } } else { msg.reply(`Sorry, you have to be level 1 to change your name. You're stuck with ${data.name}`); } } function printRaces(msg: any): void { let print = "The races are: "; for (let i = 0; i < races.length; i++) { if (i === races.length - 1) { print += `& ${raceText(races[i])}s`; } else { print += `${raceText(races[i])}s, `; } } msg.reply(print); } function printClasses(msg: any): void { let print = "The classes are: "; for (let i = 0; i < classes.length; i++) { if (i === classes.length - 1) { print += `& ${capitalize(classes[i])}s`; } else { print += `${capitalize(classes[i])}s, `; } } msg.reply(print); }