Minor adjustments
report command now requires a description moved an insert query that was duplicated many times to new constant in the db.ts import improved error reporting on roll modifiers, they now are fancy EMBEDS!
This commit is contained in:
parent
ce77893d37
commit
541747285f
14
src/api.ts
14
src/api.ts
|
@ -16,7 +16,7 @@ import {
|
||||||
nanoid
|
nanoid
|
||||||
} from "../deps.ts";
|
} from "../deps.ts";
|
||||||
|
|
||||||
import { dbClient } from "./db.ts";
|
import { dbClient, queries } from "./db.ts";
|
||||||
import solver from "./solver.ts";
|
import solver from "./solver.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";
|
||||||
|
@ -215,7 +215,7 @@ const start = async (): Promise<void> => {
|
||||||
requestEvent.respondWith(new Response(STATUS_TEXT.get(Status.BadRequest), { status: Status.BadRequest }));
|
requestEvent.respondWith(new Response(STATUS_TEXT.get(Status.BadRequest), { status: Status.BadRequest }));
|
||||||
|
|
||||||
// Always log API rolls for abuse detection
|
// Always log API rolls for abuse detection
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,1,1)", [originalCommand, "EmptyInput", null]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(1, 1), [originalCommand, "EmptyInput", null]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
@ -226,7 +226,7 @@ const start = async (): Promise<void> => {
|
||||||
requestEvent.respondWith(new Response(STATUS_TEXT.get(Status.BadRequest), { status: Status.BadRequest }));
|
requestEvent.respondWith(new Response(STATUS_TEXT.get(Status.BadRequest), { status: Status.BadRequest }));
|
||||||
|
|
||||||
// Always log API rolls for abuse detection
|
// Always log API rolls for abuse detection
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,1,1)", [originalCommand, "BadOrder", null]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(1, 1), [originalCommand, "BadOrder", null]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
@ -247,7 +247,7 @@ const start = async (): Promise<void> => {
|
||||||
requestEvent.respondWith(new Response(returnmsg.errorMsg, { status: Status.InternalServerError }));
|
requestEvent.respondWith(new Response(returnmsg.errorMsg, { status: Status.InternalServerError }));
|
||||||
|
|
||||||
// Always log API rolls for abuse detection
|
// Always log API rolls for abuse detection
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,1,1)", [originalCommand, returnmsg.errorCode, null]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(1, 1), [originalCommand, returnmsg.errorCode, null]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
@ -277,7 +277,7 @@ const start = async (): Promise<void> => {
|
||||||
requestEvent.respondWith(new Response(STATUS_TEXT.get(Status.BadRequest), { status: Status.BadRequest }));
|
requestEvent.respondWith(new Response(STATUS_TEXT.get(Status.BadRequest), { status: Status.BadRequest }));
|
||||||
|
|
||||||
// Always log API rolls for abuse detection
|
// Always log API rolls for abuse detection
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,1,1)", [originalCommand, "NoGMsSent", null]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(1, 1), [originalCommand, "NoGMsSent", null]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
@ -340,7 +340,7 @@ const start = async (): Promise<void> => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Always log API rolls for abuse detection
|
// Always log API rolls for abuse detection
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,1,0)", [originalCommand, returnText, ((typeof m === "object") ? m.id : null)]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(1, 0), [originalCommand, returnText, ((typeof m === "object") ? m.id : null)]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -385,7 +385,7 @@ const start = async (): Promise<void> => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If enabled, log rolls so we can verify the bots math
|
// If enabled, log rolls so we can verify the bots math
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,1,0)", [originalCommand, returnText, ((typeof m === "object") ? m.id : null)]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(1, 0), [originalCommand, returnText, ((typeof m === "object") ? m.id : null)]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into database: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -11,10 +11,16 @@ export const report = (message: DiscordenoMessage, args: string[]) => {
|
||||||
utils.log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (args.join(" ")) {
|
||||||
sendMessage(config.reportChannel, generateReport(args.join(" "))).catch(e => {
|
sendMessage(config.reportChannel, generateReport(args.join(" "))).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
message.send(constantCmds.report).catch(e => {
|
message.send(constantCmds.report).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
message.send(constantCmds.reportFail).catch(e => {
|
||||||
|
utils.log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e)}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import config from "../../config.ts";
|
import config from "../../config.ts";
|
||||||
import { DEVMODE } from "../../flags.ts";
|
import { DEVMODE } from "../../flags.ts";
|
||||||
import { dbClient } from "../db.ts";
|
import { dbClient, queries } from "../db.ts";
|
||||||
import { DiscordenoMessage, sendDirectMessage } from "../../deps.ts";
|
import { DiscordenoMessage, sendDirectMessage } from "../../deps.ts";
|
||||||
import utils from "../utils.ts";
|
import utils from "../utils.ts";
|
||||||
import solver from "../solver.ts";
|
import solver from "../solver.ts";
|
||||||
|
@ -49,7 +49,7 @@ export const roll = async (message: DiscordenoMessage, args: string[], command:
|
||||||
|
|
||||||
if (DEVMODE && config.logRolls) {
|
if (DEVMODE && config.logRolls) {
|
||||||
// If enabled, log rolls so we can verify the bots math
|
// If enabled, log rolls so we can verify the bots math
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,0,1)", [originalCommand, returnmsg.errorCode, m.id]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(0, 1), [originalCommand, returnmsg.errorCode, m.id]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ export const roll = async (message: DiscordenoMessage, args: string[], command:
|
||||||
|
|
||||||
if (DEVMODE && config.logRolls) {
|
if (DEVMODE && config.logRolls) {
|
||||||
// If enabled, log rolls so we can verify the bots math
|
// If enabled, log rolls so we can verify the bots math
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,0,0)", [originalCommand, returnText, m.id]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(0, 0), [originalCommand, returnText, m.id]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ export const roll = async (message: DiscordenoMessage, args: string[], command:
|
||||||
|
|
||||||
if (DEVMODE && config.logRolls) {
|
if (DEVMODE && config.logRolls) {
|
||||||
// If enabled, log rolls so we can verify the bots math
|
// If enabled, log rolls so we can verify the bots math
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,0,0)", [originalCommand, returnText, m.id]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(0, 0), [originalCommand, returnText, m.id]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
import config from "../../../config.ts";
|
import config from "../../../config.ts";
|
||||||
import { DEVMODE } from "../../../flags.ts";
|
import { DEVMODE } from "../../../flags.ts";
|
||||||
import { dbClient } from "../../db.ts";
|
import { dbClient, queries } from "../../db.ts";
|
||||||
import { DiscordenoMessage } from "../../../deps.ts";
|
import { DiscordenoMessage } from "../../../deps.ts";
|
||||||
|
import { generateRollError } from "../../constantCmds.ts";
|
||||||
import utils from "../../utils.ts";
|
import utils from "../../utils.ts";
|
||||||
import { LogTypes as LT } from "../../utils.enums.ts";
|
import { LogTypes as LT } from "../../utils.enums.ts";
|
||||||
import { RollModifiers } from "../../mod.d.ts";
|
import { RollModifiers } from "../../mod.d.ts";
|
||||||
|
|
||||||
export const getModifiers = (m: DiscordenoMessage, args: string[], command: string, originalCommand: string): RollModifiers => {
|
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,
|
||||||
spoiler: "",
|
spoiler: "",
|
||||||
|
@ -58,11 +60,11 @@ 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("Error: Must specifiy at least one GM by mentioning them");
|
m.edit(generateRollError(errorType, "Must specifiy at least one GM by @mentioning them"));
|
||||||
|
|
||||||
if (DEVMODE && config.logRolls) {
|
if (DEVMODE && config.logRolls) {
|
||||||
// If enabled, log rolls so we can verify the bots math
|
// If enabled, log rolls so we can verify the bots math
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,0,1)", [originalCommand, "NoGMsFound", m.id]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(0, 1), [originalCommand, "NoGMsFound", m.id]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -73,15 +75,17 @@ export const getModifiers = (m: DiscordenoMessage, args: string[], command: stri
|
||||||
i--;
|
i--;
|
||||||
break;
|
break;
|
||||||
case "-o":
|
case "-o":
|
||||||
|
console.log(args)
|
||||||
args.splice(i, 1);
|
args.splice(i, 1);
|
||||||
|
console.log(args)
|
||||||
|
|
||||||
if (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("Error: Must specifiy a or d to order the rolls ascending or descending");
|
m.edit(generateRollError(errorType, "Must specifiy `a` or `d` to order the rolls ascending or descending"));
|
||||||
|
|
||||||
if (DEVMODE && config.logRolls) {
|
if (DEVMODE && config.logRolls) {
|
||||||
// If enabled, log rolls so we can verify the bots math
|
// If enabled, log rolls so we can verify the bots math
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,0,1)", [originalCommand, "NoOrderFound", m.id]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(0, 1), [originalCommand, "NoOrderFound", m.id]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -100,11 +104,11 @@ export const getModifiers = (m: DiscordenoMessage, args: string[], command: stri
|
||||||
|
|
||||||
// maxRoll and nominalRoll cannot both be on, throw an error
|
// maxRoll and nominalRoll cannot both be on, throw an error
|
||||||
if (modifiers.maxRoll && modifiers.nominalRoll) {
|
if (modifiers.maxRoll && modifiers.nominalRoll) {
|
||||||
m.edit("Error: Cannot maximise and nominise the roll at the same time");
|
m.edit(generateRollError(errorType, "Cannot maximise and nominise the roll at the same time"));
|
||||||
|
|
||||||
if (DEVMODE && config.logRolls) {
|
if (DEVMODE && config.logRolls) {
|
||||||
// If enabled, log rolls so we can verify the bots math
|
// If enabled, log rolls so we can verify the bots math
|
||||||
dbClient.execute("INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,0,1)", [originalCommand, "MaxAndNominal", m.id]).catch(e => {
|
dbClient.execute(queries.insertRollLogCmd(0, 1), [originalCommand, "MaxAndNominal", m.id]).catch(e => {
|
||||||
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
utils.log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e)}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,6 +167,14 @@ export const constantCmds = {
|
||||||
}]
|
}]
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
|
reportFail: {
|
||||||
|
embeds: [{
|
||||||
|
fields: [{
|
||||||
|
name: "Please provide a short description of what failed",
|
||||||
|
value: "Providing a short description helps my developer quickly diagnose what went wrong."
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
},
|
||||||
rip: {
|
rip: {
|
||||||
embeds: [{
|
embeds: [{
|
||||||
fields: [{
|
fields: [{
|
||||||
|
@ -426,3 +434,13 @@ export const generateApiDeleteEmail = (email: string, deleteCode: string) => ({
|
||||||
]
|
]
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const generateRollError = (errorType: string, errorMsg: string) => ({
|
||||||
|
embeds: [{
|
||||||
|
title: "Roll command encountered the following error:",
|
||||||
|
fields: [{
|
||||||
|
name: errorType,
|
||||||
|
value: `${errorMsg}\n\nPlease try again. If the error is repeated, please report the issue using the \`[[report\` command.`
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
|
@ -9,3 +9,7 @@ export const dbClient = await new Client().connect({
|
||||||
username: config.db.username,
|
username: config.db.username,
|
||||||
password: config.db.password
|
password: config.db.password
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const queries = {
|
||||||
|
insertRollLogCmd: (api: number, error: number) => `INSERT INTO roll_log(input,result,resultid,api,error) values(?,?,?,${api},${error})`
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue