Optimized emoji command, made all command responsess more dynamic

Emoji command should be significantly more optimized by rejecting non-emojis much faster
Bot will now respond with the prefix/postfix set in the config instead of assuming the prefix/postfix are always [[/]]
This commit is contained in:
Ean Milligan (Bastion) 2022-05-05 02:19:19 -04:00
parent d2083bea53
commit 23c16f7832
3 changed files with 82 additions and 72 deletions

View File

@ -5,7 +5,15 @@ import utils from "../utils.ts";
import { LogTypes as LT } from "../utils.enums.ts"; import { LogTypes as LT } from "../utils.enums.ts";
import { EmojiConf } from "../mod.d.ts"; import { EmojiConf } from "../mod.d.ts";
const allEmojiAliases: string[] = [];
config.emojis.forEach((emoji: EmojiConf) => {
allEmojiAliases.push(...emoji.aliases)
});
export const emoji = (message: DiscordenoMessage, command: string) => { export const emoji = (message: DiscordenoMessage, command: string) => {
// shortcut
if (allEmojiAliases.indexOf(command)) {
// Start looping thru the possible emojis // Start looping thru the possible emojis
config.emojis.some((emoji: EmojiConf) => { config.emojis.some((emoji: EmojiConf) => {
utils.log(LT.LOG, `Checking if command was emoji ${JSON.stringify(emoji)}`); utils.log(LT.LOG, `Checking if command was emoji ${JSON.stringify(emoji)}`);
@ -29,4 +37,5 @@ export const emoji = (message: DiscordenoMessage, command: string) => {
return true; return true;
} }
}); });
}
}; };

View File

@ -33,23 +33,23 @@ export const constantCmds = {
title: "Available API Commands:", title: "Available API Commands:",
fields: [ fields: [
{ {
name: "[[api help", name: `\`${config.prefix}api help\``,
value: "This command", value: "This command",
inline: true inline: true
}, { }, {
name: "[[api status", name: `\`${config.prefix}api status\``,
value: "Shows the current status of the API for this guild", value: "Shows the current status of the API for this guild",
inline: true inline: true
}, { }, {
name: "[[api allow/enable", name: `\`${config.prefix}api allow/enable\``,
value: "Allows API Rolls to be sent to this guild", value: "Allows API Rolls to be sent to this guild",
inline: true inline: true
}, { }, {
name: "[[api block/disable", name: `\`${config.prefix}api block/disable\``,
value: "Blocks API Rolls from being sent to this guild", value: "Blocks API Rolls from being sent to this guild",
inline: true inline: true
}, { }, {
name: "[[api delete", name: `\`${config.prefix}api delete\``,
value: "Deletes this guild from The Artificer's database", value: "Deletes this guild from The Artificer's database",
inline: true inline: true
} }
@ -83,48 +83,48 @@ export const constantCmds = {
title: "The Artificer's Available Commands:", title: "The Artificer's Available Commands:",
fields: [ fields: [
{ {
name: "[[?", name: `\`${config.prefix}?\``,
value: "This command", value: "This command",
inline: true inline: true
}, { }, {
name: "[[rollhelp or [[??", name: `\`${config.prefix}rollhelp\` or \`${config.prefix}??\``,
value: "Details on how to use the roll command, listed as `[[xdy...]]` below", value: `Details on how to use the roll command, listed as \`${config.prefix}xdy...${config.postfix}\` below`,
inline: true inline: true
}, { }, {
name: "[[api [subcommand]", name: `\`${config.prefix}api [subcommand]\``,
value: "Administrative tools for the bots's API, run [[api help for more details", value: `Administrative tools for the bots's API, run \`${config.prefix}api help\` for more details`,
inline: true inline: true
}, { }, {
name: "[[ping", name: `\`${config.prefix}ping\``,
value: "Pings the bot to check connectivity", value: "Pings the bot to check connectivity",
inline: true inline: true
}, { }, {
name: "[[info", name: `\`${config.prefix}info\``,
value: "Prints some information and links relating to the bot", value: "Prints some information and links relating to the bot",
inline: true inline: true
}, { }, {
name: "[[privacy", name: `\`${config.prefix}privacy\``,
value: "Prints some information about the Privacy Policy", value: "Prints some information about the Privacy Policy",
inline: true inline: true
}, { }, {
name: "[[version", name: `\`${config.prefix}version\``,
value: "Prints the bots version", value: "Prints the bots version",
inline: true inline: true
}, { }, {
name: "[[popcat", name: `\`${config.prefix}popcat\``,
value: "Popcat", value: "Popcat",
inline: true inline: true
}, { }, {
name: "[[report [text]", name: `\`${config.prefix}report [text]\``,
value: "Report a command that failed to run", value: "Report a command that failed to run",
inline: true inline: true
}, { }, {
name: "[[stats", name: `\`${config.prefix}stats\``,
value: "Statistics on the bot", value: "Statistics on the bot",
inline: true inline: true
}, { }, {
name: "[[xdydzracsq!]] ...", name: `\`${config.prefix}xdydzracsq!${config.postfix}\` ...`,
value: "Rolls all configs requested, you may repeat the command multiple times in the same message (just ensure you close each roll with ]]), run [[?? for more details", value: `Rolls all configs requested, you may repeat the command multiple times in the same message (just ensure you close each roll with \`${config.postfix}\`), run \`${config.prefix}??\` for more details`,
inline: true inline: true
} }
] ]
@ -151,7 +151,7 @@ export const constantCmds = {
title: "Privacy Policy", title: "Privacy Policy",
fields: [{ fields: [{
name: "The Artificer does not track or collect user information via Discord.", name: "The Artificer does not track or collect user information via Discord.",
value: `The only user submitted information that is stored is submitted via the \`[[report\` command. This information is only stored for a short period of time in a location that only the Developer of The Artificer can see. value: `The only user submitted information that is stored is submitted via the \`${config.prefix}report\` command. This information is only stored for a short period of time in a location that only the Developer of The Artificer can see.
For more details, please check out the Privacy Policy on the GitHub [here](https://github.com/Burn-E99/TheArtificer/blob/master/PRIVACY.md). For more details, please check out the Privacy Policy on the GitHub [here](https://github.com/Burn-E99/TheArtificer/blob/master/PRIVACY.md).
@ -196,63 +196,63 @@ export const constantCmds = {
This command also can fully solve math equations with parenthesis.` This command also can fully solve math equations with parenthesis.`
}, { }, {
name: "[[xdydzracsq!]] ...", name: `\`${config.prefix}xdydzracsq!${config.postfix}\` ...`,
value: "Rolls all configs requested, you may repeat the command multiple times in the same message (just ensure you close each roll with ]])", value: `Rolls all configs requested, you may repeat the command multiple times in the same message (just ensure you close each roll with \`${config.postfix}\`)`,
inline: true inline: true
}, { }, {
name: "x [Optional]", name: "`x` [Optional]",
value: "Number of dice to roll, if omitted, 1 is used", value: "Number of dice to roll, if omitted, 1 is used",
inline: true inline: true
}, { }, {
name: "dy [Required]", name: "`dy` [Required]",
value: "Size of dice to roll, d20 = 20 sided die", value: "Size of dice to roll, `d20` = 20 sided die",
inline: true inline: true
}, { }, {
name: "dz or dlz [Optional]", name: "`dz` or `dlz` [Optional]",
value: "Drops the lowest `z` dice, cannot be used with kz", value: "Drops the lowest `z` dice, cannot be used with `kz`",
inline: true inline: true
}, { }, {
name: "kz or khz [Optional]", name: "`kz` or `khz` [Optional]",
value: "Keeps the highest `z` dice, cannot be used with dz", value: "Keeps the highest `z` dice, cannot be used with `dz`",
inline: true inline: true
}, { }, {
name: "dhz [Optional]", name: "`dhz` [Optional]",
value: "Drops the highest `z` dice, cannot be used with kz", value: "Drops the highest `z` dice, cannot be used with `kz`",
inline: true inline: true
}, { }, {
name: "klz [Optional]", name: "`klz` [Optional]",
value: "Keeps the lowest `z` dice, cannot be used with dz", value: "Keeps the lowest `z` dice, cannot be used with `dz`",
inline: true inline: true
}, { }, {
name: "ra [Optional]", name: "`ra` [Optional]",
value: "Rerolls any rolls that match `a`, r3 will reroll any dice that land on 3, throwing out old rolls", value: "Rerolls any rolls that match `a`, `r3` will reroll any dice that land on 3, throwing out old rolls",
inline: true inline: true
}, { }, {
name: "csq or cs=q [Optional]", name: "`csq` or `cs=q` [Optional]",
value: "Changes crit score to `q`", value: "Changes crit score to `q`",
inline: true inline: true
}, { }, {
name: "cs<q [Optional]", name: "`cs<q` [Optional]",
value: "Changes crit score to be less than or equal to `q`", value: "Changes crit score to be less than or equal to `q`",
inline: true inline: true
}, { }, {
name: "cs>q [Optional]", name: "`cs>q` [Optional]",
value: "Changes crit score to be greater than or equal to `q`", value: "Changes crit score to be greater than or equal to `q`",
inline: true inline: true
}, { }, {
name: "cfq or cf=q [Optional]", name: "`cfq` or `cf=q` [Optional]",
value: "Changes crit fail to `q`", value: "Changes crit fail to `q`",
inline: true inline: true
}, { }, {
name: "cf<q [Optional]", name: "`cf<q` [Optional]",
value: "Changes crit fail to be less than or equal to `q`", value: "Changes crit fail to be less than or equal to `q`",
inline: true inline: true
}, { }, {
name: "cf>q [Optional]", name: "`cf>q` [Optional]",
value: "Changes crit fail to be greater than or equal to `q`", value: "Changes crit fail to be greater than or equal to `q`",
inline: true inline: true
}, { }, {
name: "! [Optional]", name: "`!` [Optional]",
value: "Exploding, rolls another dy for every crit roll", value: "Exploding, rolls another dy for every crit roll",
inline: true inline: true
} }
@ -264,29 +264,29 @@ export const constantCmds = {
name: "Details", name: "Details",
value: `This command also has some useful flags that can used. These flags simply need to be placed after all rolls in the message. value: `This command also has some useful flags that can used. These flags simply need to be placed after all rolls in the message.
Examples: \`[[d20]] -nd\`, \`[[d20]] -nd -s\`` Examples: \`${config.prefix}d20${config.postfix} -nd\`, \`${config.prefix}d20${config.postfix} -nd -s\``
}, { }, {
name: "-nd", name: "`-nd`",
value: "No Details - Suppresses all details of the requested roll", value: "No Details - Suppresses all details of the requested roll",
inline: true inline: true
}, { }, {
name: "-s", name: "`-s`",
value: "Spoiler - Spoilers all details of the requested roll", value: "Spoiler - Spoilers all details of the requested roll",
inline: true inline: true
}, { }, {
name: "-m", name: "`-m`",
value: "Maximize Roll - Rolls the theoretical maximum roll, cannot be used with -n", value: "Maximize Roll - Rolls the theoretical maximum roll, cannot be used with -n",
inline: true inline: true
}, { }, {
name: "-n", name: "`-n`",
value: "Nominal Roll - Rolls the theoretical nominal roll, cannot be used with -m", value: "Nominal Roll - Rolls the theoretical nominal roll, cannot be used with -m",
inline: true inline: true
}, { }, {
name: "-gm @user1 @user2 @usern", name: "`-gm @user1 @user2 @usern`",
value: "GM Roll - Rolls the requested roll in GM mode, suppressing all publicly shown results and details and sending the results directly to the specified GMs", value: "GM Roll - Rolls the requested roll in GM mode, suppressing all publicly shown results and details and sending the results directly to the specified GMs",
inline: true inline: true
}, { }, {
name: "-o a or -o d", name: "`-o a` or `-o d`",
value: "Order Roll - Rolls the requested roll and orders the results in the requested direction", value: "Order Roll - Rolls the requested roll and orders the results in the requested direction",
inline: true inline: true
} }
@ -440,7 +440,7 @@ export const generateRollError = (errorType: string, errorMsg: string) => ({
title: "Roll command encountered the following error:", title: "Roll command encountered the following error:",
fields: [{ fields: [{
name: errorType, name: errorType,
value: `${errorMsg}\n\nPlease try again. If the error is repeated, please report the issue using the \`[[report\` command.` value: `${errorMsg}\n\nPlease try again. If the error is repeated, please report the issue using the \`${config.prefix}report\` command.`
}] }]
}] }]
}); });

View File

@ -4,6 +4,7 @@
* December 21, 2020 * December 21, 2020
*/ */
import config from "../config.ts";
import { RollSet, SolvedStep, SolvedRoll, ReturnData } from "./solver.d.ts"; import { RollSet, SolvedStep, SolvedRoll, ReturnData } from "./solver.d.ts";
import { LogTypes as LT } from "./utils.enums.ts"; import { LogTypes as LT } from "./utils.enums.ts";
import utils from "./utils.ts"; import utils from "./utils.ts";
@ -1013,7 +1014,7 @@ const parseRoll = (fullCmd: string, localPrefix: string, localPostfix: string, m
break; break;
default: default:
utils.log(LT.ERROR, `Undangled Error: ${errorName}, ${errorDetails}`); utils.log(LT.ERROR, `Undangled Error: ${errorName}, ${errorDetails}`);
errorMsg = `Unhandled Error: ${solverError.message}\nCheck input and try again, if issue persists, please use \`[[report\` to alert the devs of the issue`; errorMsg = `Unhandled Error: ${solverError.message}\nCheck input and try again, if issue persists, please use \`${config.prefix}report\` to alert the devs of the issue`;
break; break;
} }