From 32a3584e7bef67f27a8e9497e15dc6ac7465640b Mon Sep 17 00:00:00 2001 From: WubzyGD Date: Thu, 10 Feb 2022 18:05:58 -0700 Subject: [PATCH] rp editing and deleting --- commands/fun/rp.js | 66 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/commands/fun/rp.js b/commands/fun/rp.js index d34e80f..80fa3a0 100644 --- a/commands/fun/rp.js +++ b/commands/fun/rp.js @@ -54,9 +54,11 @@ module.exports = { } if (!options.image.startsWith('https://cdn.discordapp.com/attachments/')) {return message.channel.send(tags ? "You must provide a cdn.discordapp.com link." : "It seems you didn't upload an image, or there was an error on my side. If the problem persists, please contact my developers.");} + if (options.image.length > 350) {return message.channel.send("That image URL is a little too long.");} let rp = await RP.findOne({uid: message.author.id}) || new RP({uid: message.author.id}); if (rp.chars[options.prefix]) {return message.channel.send("You already have a character with that prefix. Please try again with a different prefix.");} + if (Object.keys(rp.chars).length >= 20) {return message.channel.send("The current maximum of characters is 20, and you've reached that maximum. Sorry!");} rp.chars[options.prefix] = options; rp.markModified(`chars.${options.prefix}`); rp.save(); @@ -88,9 +90,69 @@ module.exports = { .setTimestamp() ]}); } else if (['edit', 'e'].includes(args[0].toLowerCase())) { - if (!args[1]) {return message.channel.send(`Syntax: \`${prefix}rp edit <>\``)} - } else if (['delete', 'd'].includes(args[0].toLowerCase())) { + const rp = await RP.findOne({uid: message.author.id}); + if (!rp || !Object.keys(rp.chars).length) {return message.channel.send("You don't have any characters to edit.");} + if (!args[1]) {return message.channel.send("You must provide the prefix of a character to edit!");} + if (!rp.chars[args[1].toLowerCase()]) {return message.channel.send("A character with that prefix doesn't exist.");} + let char = rp.chars[args[1].toLowerCase()]; + + if (!args[2]) {return message.channel.send(`Syntax: \`${prefix}rp edit \``);} + if (['p', 'prefix'].includes(args[2].toLowerCase())) { + let old = char.prefix; + let prefix; + if (!args[3]) { + prefix = await ask(message, "What prefix would you like to set?", 60000); + if (!prefix) {return;} + } else {prefix = args[3];} + prefix = prefix.toLowerCase(); + if (prefix.length > 8) {return message.channel.send("Your prefix should be less than 8 characters.");} + if (!prefix.match(/^[a-zA-Z0-9-_]+$/)) {return message.channel.send("Your prefix must contain only alphanumeric characters.");} + if (prefix === old) {return message.channel.send("That's the same prefix you already had, silly!");} + char.prefix = prefix; + delete rp.chars[old]; + rp.chars[prefix] = char; + ['chars', `chars.${old}`, `chars.${prefix}`].forEach(x => rp.markModified(x)); + rp.save(); + return message.channel.send("Prefix saved!"); + } else if (['i', 'image', 'img'].includes(args[2].toLowerCase())) { + let image; + if (!args[3]) { + image = await ask(message, "What image would you like to set?", 60000); + if (!image) {return;} + } else {image = args[3];} + if (!image.startsWith('https://cdn.discordapp.com/attachments/')) {return message.channel.send("You must provide a cdn.discordapp.com link.");} + if (image.length > 350) {return message.channel.send("That image URL is a little too long.");} + rp.chars[char.prefix].image = image; + rp.markModified(`chars.${char.prefix}`); + rp.save(); + return message.channel.send("Image saved!"); + } else if (['n', 'name'].includes(args[2].toLowerCase())) { + args = args.slice(3); + let name; + if (!args[0]) { + name = await ask(message, "What name would you like to set?", 60000); + if (!name) {return;} + } else {name = args.join(" ");} + if (name.length > 75) {return message.channel.send("That name is a little too long.");} + rp.chars[char.prefix].name = name; + rp.markModified(`chars.${char.prefix}`); + rp.save(); + return message.channel.send("Name saved!"); + } else {return message.channel.send(`Invalid arg! Syntax: \`${prefix}rp edit \``);} + } else if (['delete', 'd'].includes(args[0].toLowerCase())) { + const rp = await RP.findOne({uid: message.author.id}); + if (!rp || !Object.keys(rp.chars).length) {return message.channel.send("You don't have any characters to delete.");} + if (!args[1]) {return message.channel.send("You must provide the prefix of a character to delete!");} + if (!rp.chars[args[1].toLowerCase()]) {return message.channel.send("A character with that prefix doesn't exist.");} + let char = rp.chars[args[1].toLowerCase()]; + let conf = await ask(message, `Are you sure you want to delete ${char.name}?`, 60000); + if (!conf) {return;} + if (!['yes', 'y', 'sure', 'mhm', 'ye'].includes(conf.toLowerCase())) {return message.channel.send("Okay, I won't do anything then.");} + delete rp.chars[char.prefix]; + rp.markModified(`chars.${char.prefix}`); + rp.save(); + return message.channel.send("I've deleted that character for you."); } else if (['enable', 'en'].includes(args[0].toLowerCase())) { }