move getModifiers into artigen, simplify its error handling a lot
This commit is contained in:
parent
9bd757741b
commit
829ec0ecea
|
@ -44,8 +44,9 @@ export interface RollModifiers {
|
||||||
order: string;
|
order: string;
|
||||||
count: boolean;
|
count: boolean;
|
||||||
commaTotals: boolean;
|
commaTotals: boolean;
|
||||||
valid: boolean;
|
|
||||||
apiWarn: string;
|
apiWarn: string;
|
||||||
|
valid: boolean;
|
||||||
|
error: Error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Basic conf interfaces
|
// Basic conf interfaces
|
||||||
|
|
|
@ -1,19 +1,8 @@
|
||||||
import { DiscordenoMessage } from '@discordeno';
|
|
||||||
import { log, LogTypes as LT } from '@Log4Deno';
|
import { log, LogTypes as LT } from '@Log4Deno';
|
||||||
|
|
||||||
import config from '~config';
|
|
||||||
import { DEVMODE } from '~flags';
|
|
||||||
|
|
||||||
import { RollModifiers } from 'artigen/dice/dice.d.ts';
|
import { RollModifiers } from 'artigen/dice/dice.d.ts';
|
||||||
|
|
||||||
import dbClient from 'db/client.ts';
|
export const getModifiers = (args: string[]): RollModifiers => {
|
||||||
import { queries } from 'db/common.ts';
|
|
||||||
|
|
||||||
import { generateRollError } from 'src/commandUtils.ts';
|
|
||||||
import utils from 'src/utils.ts';
|
|
||||||
|
|
||||||
export const getModifiers = (m: DiscordenoMessage, args: string[], command: string, originalCommand: string): RollModifiers => {
|
|
||||||
const errorType = 'Modifiers invalid:';
|
|
||||||
const modifiers: RollModifiers = {
|
const modifiers: RollModifiers = {
|
||||||
noDetails: false,
|
noDetails: false,
|
||||||
superNoDetails: false,
|
superNoDetails: false,
|
||||||
|
@ -26,13 +15,14 @@ export const getModifiers = (m: DiscordenoMessage, args: string[], command: stri
|
||||||
order: '',
|
order: '',
|
||||||
count: false,
|
count: false,
|
||||||
commaTotals: false,
|
commaTotals: false,
|
||||||
valid: false,
|
|
||||||
apiWarn: '',
|
apiWarn: '',
|
||||||
|
valid: false,
|
||||||
|
error: new Error(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Check if any of the args are command flags and pull those out into the modifiers object
|
// Check if any of the args are command flags and pull those out into the modifiers object
|
||||||
for (let i = 0; i < args.length; i++) {
|
for (let i = 0; i < args.length; i++) {
|
||||||
log(LT.LOG, `Checking ${command}${args.join(' ')} for command modifiers ${i}`);
|
log(LT.LOG, `Checking ${args.join(' ')} for command modifiers ${i}`);
|
||||||
let defaultCase = false;
|
let defaultCase = false;
|
||||||
switch (args[i].toLowerCase()) {
|
switch (args[i].toLowerCase()) {
|
||||||
case '-c':
|
case '-c':
|
||||||
|
@ -69,14 +59,8 @@ export const getModifiers = (m: DiscordenoMessage, args: string[], command: stri
|
||||||
}
|
}
|
||||||
if (modifiers.gms.length < 1) {
|
if (modifiers.gms.length < 1) {
|
||||||
// If -gm is on and none were found, throw an error
|
// If -gm is on and none were found, throw an error
|
||||||
m.edit(generateRollError(errorType, 'Must specify at least one GM by @mentioning them')).catch((e) => utils.commonLoggers.messageEditError('getModifiers.ts:66', m, e));
|
modifiers.error.name = 'NoGMsFound';
|
||||||
|
modifiers.error.message = 'Must specify at least one GM by @mentioning them';
|
||||||
if (DEVMODE && config.logRolls) {
|
|
||||||
// If enabled, log rolls so we can verify the bots math
|
|
||||||
dbClient
|
|
||||||
.execute(queries.insertRollLogCmd(0, 1), [originalCommand, 'NoGMsFound', m.id])
|
|
||||||
.catch((e) => utils.commonLoggers.dbError('getModifiers.ts:72', 'insert into', e));
|
|
||||||
}
|
|
||||||
return modifiers;
|
return modifiers;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -86,14 +70,8 @@ export const getModifiers = (m: DiscordenoMessage, args: string[], command: stri
|
||||||
|
|
||||||
if (!args[i] || (args[i].toLowerCase()[0] !== 'd' && args[i].toLowerCase()[0] !== 'a')) {
|
if (!args[i] || (args[i].toLowerCase()[0] !== 'd' && args[i].toLowerCase()[0] !== 'a')) {
|
||||||
// If -o is on and asc or desc was not specified, error out
|
// If -o is on and asc or desc was not specified, error out
|
||||||
m.edit(generateRollError(errorType, 'Must specify `a` or `d` to order the rolls ascending or descending')).catch((e) => utils.commonLoggers.messageEditError('getModifiers.ts:81', m, e));
|
modifiers.error.name = 'NoOrderFound';
|
||||||
|
modifiers.error.message = 'Must specify `a` or `d` to order the rolls ascending or descending';
|
||||||
if (DEVMODE && config.logRolls) {
|
|
||||||
// If enabled, log rolls so we can verify the bots math
|
|
||||||
dbClient
|
|
||||||
.execute(queries.insertRollLogCmd(0, 1), [originalCommand, 'NoOrderFound', m.id])
|
|
||||||
.catch((e) => utils.commonLoggers.dbError('getModifiers.ts:89', 'insert into', e));
|
|
||||||
}
|
|
||||||
return modifiers;
|
return modifiers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,16 +94,8 @@ export const getModifiers = (m: DiscordenoMessage, args: string[], command: stri
|
||||||
|
|
||||||
// maxRoll, minRoll, and nominalRoll cannot be on at same time, throw an error
|
// maxRoll, minRoll, and nominalRoll cannot be on at same time, throw an error
|
||||||
if ([modifiers.maxRoll, modifiers.minRoll, modifiers.nominalRoll].filter((b) => b).length > 1) {
|
if ([modifiers.maxRoll, modifiers.minRoll, modifiers.nominalRoll].filter((b) => b).length > 1) {
|
||||||
m.edit(generateRollError(errorType, 'Can only use one of the following at a time:\n`maximize`, `minimize`, `nominal`')).catch((e) =>
|
modifiers.error.name = 'MaxAndNominal';
|
||||||
utils.commonLoggers.messageEditError('getModifiers.ts:106', m, e)
|
modifiers.error.message = 'Can only use one of the following at a time:\n`maximize`, `minimize`, `nominal`';
|
||||||
);
|
|
||||||
|
|
||||||
if (DEVMODE && config.logRolls) {
|
|
||||||
// If enabled, log rolls so we can verify the bots math
|
|
||||||
dbClient
|
|
||||||
.execute(queries.insertRollLogCmd(0, 1), [originalCommand, 'MaxAndNominal', m.id])
|
|
||||||
.catch((e) => utils.commonLoggers.dbError('getModifiers.ts:120', 'insert into', e));
|
|
||||||
}
|
|
||||||
return modifiers;
|
return modifiers;
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,7 +195,7 @@ ${config.name} Developer - Ean Milligan`,
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
export const generateRollError = (errorType: string, errorMsg: string) => ({
|
export const generateRollError = (errorType: string, errorName: string, errorMsg: string) => ({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
color: failColor,
|
color: failColor,
|
||||||
|
@ -206,6 +206,9 @@ export const generateRollError = (errorType: string, errorMsg: string) => ({
|
||||||
value: `${errorMsg}\n\nPlease try again. If the error is repeated, please report the issue using the \`${config.prefix}report\` command.`,
|
value: `${errorMsg}\n\nPlease try again. If the error is repeated, please report the issue using the \`${config.prefix}report\` command.`,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
footer: {
|
||||||
|
text: errorName,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,14 +4,14 @@ import { log, LogTypes as LT } from '@Log4Deno';
|
||||||
import config from '~config';
|
import config from '~config';
|
||||||
import { DEVMODE } from '~flags';
|
import { DEVMODE } from '~flags';
|
||||||
|
|
||||||
|
import { getModifiers } from 'artigen/dice/getModifiers.ts';
|
||||||
|
|
||||||
import { sendRollRequest } from 'artigen/managers/queueManager.ts';
|
import { sendRollRequest } from 'artigen/managers/queueManager.ts';
|
||||||
|
|
||||||
import dbClient from 'db/client.ts';
|
import dbClient from 'db/client.ts';
|
||||||
import { queries } from 'db/common.ts';
|
import { queries } from 'db/common.ts';
|
||||||
|
|
||||||
import rollFuncs from 'commands/roll/_index.ts';
|
import { generateRollError, rollingEmbed, warnColor } from 'src/commandUtils.ts';
|
||||||
|
|
||||||
import { rollingEmbed, warnColor } from 'src/commandUtils.ts';
|
|
||||||
import utils from 'src/utils.ts';
|
import utils from 'src/utils.ts';
|
||||||
|
|
||||||
export const roll = async (message: DiscordenoMessage, args: string[], command: string) => {
|
export const roll = async (message: DiscordenoMessage, args: string[], command: string) => {
|
||||||
|
@ -42,10 +42,18 @@ export const roll = async (message: DiscordenoMessage, args: string[], command:
|
||||||
const m = await message.reply(rollingEmbed);
|
const m = await message.reply(rollingEmbed);
|
||||||
|
|
||||||
// Get modifiers from command
|
// Get modifiers from command
|
||||||
const modifiers = rollFuncs.getModifiers(m, args, command, originalCommand);
|
const modifiers = getModifiers(args);
|
||||||
|
|
||||||
// Return early if the modifiers were invalid
|
// Return early if the modifiers were invalid
|
||||||
if (!modifiers.valid) {
|
if (!modifiers.valid) {
|
||||||
|
m.edit(generateRollError('Modifiers invalid:', modifiers.error.name, modifiers.error.message)).catch((e) => utils.commonLoggers.messageEditError('roll.ts:50', m, e));
|
||||||
|
|
||||||
|
if (DEVMODE && config.logRolls) {
|
||||||
|
// If enabled, log rolls so we can verify the bots math
|
||||||
|
dbClient
|
||||||
|
.execute(queries.insertRollLogCmd(0, 1), [originalCommand, modifiers.error.name, m.id])
|
||||||
|
.catch((e) => utils.commonLoggers.dbError('roll.ts:57', 'insert into', e));
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
import { getModifiers } from 'commands/roll/getModifiers.ts';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
getModifiers,
|
|
||||||
};
|
|
Loading…
Reference in New Issue