Update the Nightbot command to use the async'd DB

This commit is contained in:
Oliver Akins 2022-08-14 14:21:15 -06:00
parent bca094c832
commit 3c293d371a
No known key found for this signature in database
GPG key ID: 3C2014AF9457AF99

View file

@ -4,20 +4,20 @@ import { database } from "$/main";
import boom from "@hapi/boom"; import boom from "@hapi/boom";
import Joi from "joi"; import Joi from "joi";
function subtractHandler(request: Request, meta: subcommandMetadata, args: string[]) { async function subtractHandler(request: Request, meta: subcommandMetadata, args: string[]) {
// args: !cmd sub <counter:string> [delta:integer] // args: !cmd sub <counter:string> [delta:integer]
// args: !cmd remove <counter:string> [delta:integer] // args: !cmd remove <counter:string> [delta:integer]
let { channel } = meta; let { channel } = meta;
let counter = args[1].toLowerCase(); let counter = args[1].toLowerCase();
let delta = args[2] ? parseInt(args[2]) : 1; let delta = args[2] ? parseInt(args[2]) : 1;
if (!database.counterExists(channel, counter)) { if (!await database.counterExists(channel, counter)) {
throw new Error(`No counter exists with that name`); throw new Error(`No counter exists with that name`);
}; };
return { return {
value: database.changeCount(channel, counter, -delta), value: await database.changeCount(channel, counter, -delta),
message: database.getMessage(channel, counter) message: await database.getMessage(channel, counter)
}; };
}; };
@ -28,19 +28,19 @@ interface subcommandMetadata {
const subcommands: {[index: string]: any} = { const subcommands: {[index: string]: any} = {
"add": { "add": {
argc: 1, argc: 1,
handler(request: Request, meta: subcommandMetadata, args: string[]) { async handler(request: Request, meta: subcommandMetadata, args: string[]) {
// args: !cmd add <counter:string> [delta:integer] // args: !cmd add <counter:string> [delta:integer]
let { channel } = meta; let { channel } = meta;
let counter = args[1].toLowerCase(); let counter = args[1].toLowerCase();
let delta = args[2] ? parseInt(args[2]) : 1; let delta = args[2] ? parseInt(args[2]) : 1;
if (!database.counterExists(channel, counter)) { if (!await database.counterExists(channel, counter)) {
throw new Error(`No counter exists with that name`); throw new Error(`No counter exists with that name`);
}; };
return { return {
value: database.changeCount(channel, counter, delta), value: await database.changeCount(channel, counter, delta),
message: database.getMessage(channel, counter), message: await database.getMessage(channel, counter),
}; };
}, },
}, },
@ -48,11 +48,11 @@ const subcommands: {[index: string]: any} = {
"remove": { argc: 1, handler: subtractHandler, }, "remove": { argc: 1, handler: subtractHandler, },
"new": { "new": {
argc: 1, argc: 1,
handler(request: Request, meta: subcommandMetadata, args: string[]) { async handler(request: Request, meta: subcommandMetadata, args: string[]) {
// args: !cmd new <counter:string> // args: !cmd new <counter:string>
let { channel } = meta; let { channel } = meta;
let counter = args[1].toLowerCase(); let counter = args[1].toLowerCase();
database.addCounter(channel, counter); await database.addCounter(channel, counter);
return { return {
message: `Counter ${counter} created successfully.`, message: `Counter ${counter} created successfully.`,
value: 0 value: 0
@ -61,19 +61,19 @@ const subcommands: {[index: string]: any} = {
}, },
"default": { "default": {
argc: 0, argc: 0,
handler(request: Request, meta: subcommandMetadata, args: string[]) { async handler(request: Request, meta: subcommandMetadata, args: string[]) {
// args: !cmd <counter:string> [delta:number] // args: !cmd <counter:string> [delta:number]
let { channel } = meta; let { channel } = meta;
let counter = args[0].toLowerCase(); let counter = args[0].toLowerCase();
let delta = args[1] ? parseInt(args[1]) : 1; let delta = args[1] ? parseInt(args[1]) : 1;
if (!database.counterExists(channel, counter)) { if (!await database.counterExists(channel, counter)) {
throw new Error(`No counter exists with that name`); throw new Error(`No counter exists with that name`);
}; };
return { return {
value: database.changeCount(channel, counter, delta), value: await database.changeCount(channel, counter, delta),
message: database.getMessage(channel, counter) message: await database.getMessage(channel, counter)
}; };
}, },
}, },
@ -111,16 +111,14 @@ const route: ServerRoute = {
if (!user) { throw boom.badData(`Missing user name`) }; if (!user) { throw boom.badData(`Missing user name`) };
if (!database.channelExists(channel)) { if (!await database.channelExists(channel)) {
return `The channel isn't setup to use the counter system`; return `The channel isn't setup to use the counter system`;
}; };
if (database.isUserIgnored(channel, user)) { return `Invalid permissions`; }; if (await database.isUserIgnored(channel, user)) { return `Invalid permissions`; };
console.log(`[${channel}] ${user} is running command with args: ${args}`);
try { try {
var { message, value } = sc.handler( var { message, value } = await sc.handler(
request, request,
{ channel, user }, { channel, user },
args args