From 79514845146ec8b32bf214c7db43b3fc8ca73306 Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Fri, 24 Feb 2023 08:30:28 -0700 Subject: [PATCH] Update the command to parse the new return type and escape Discord markdown --- src/endpoints/nightbot.ts | 35 ++++++++++++++++++++++++++++++++--- src/utils/markdown.ts | 8 ++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/utils/markdown.ts diff --git a/src/endpoints/nightbot.ts b/src/endpoints/nightbot.ts index 02b68e1..7ec1cbe 100644 --- a/src/endpoints/nightbot.ts +++ b/src/endpoints/nightbot.ts @@ -1,5 +1,7 @@ import { nightbotCustomHeadersSchema } from "$/schemas/nightbot"; +import { escapeDiscordMarkdown } from "$/utils/markdown"; import { Request, ServerRoute } from "@hapi/hapi"; +import { config } from "$/main"; import boom from "@hapi/boom"; import Joi from "joi"; @@ -52,14 +54,36 @@ const subcommands: {[index: string]: subcommand} = { return `You can only guess one letter at a time!` }; - return (await req.server.inject({ + let r = await req.server.inject({ method: `POST`, url: `/${meta.channel}/guess`, payload: { type: `letter`, guess: meta.args[1] } - })).payload; + }); + + if (r.statusCode != 200) { + return `Something went wrong : ` + r.statusMessage; + }; + let d = r.payload as any; + let m: string; + switch (d.status) { + case 1: + m = `"${meta.args[1].toUpperCase()}" has been guessed already. \n(incorrect: ${d.incorrect}/${config.game.max_incorrect})`; + break; + case 2: + m = `Merry chatmanmas! You won! Answer: ${d.current}`; + break; + case 3: + m = `Booooo, you lost! Answer: ${d.current}`; + break; + case 4: + m = `${d.current} \n(incorrect:${d.incorrect}/${config.game.max_incorrect})`; + break; + default: m = `Unknown guess status: ${d.status}`; + }; + return m; }, }, "solve": { @@ -127,10 +151,15 @@ const route: ServerRoute = { return `That command is mod-only! :P`; }; - return subcommands[sc].handler( + let m = await subcommands[sc].handler( { channel, user, args }, request ); + + if (channelData.get(`provider`) == `discord`) { + m = escapeDiscordMarkdown(m); + }; + return m; }, }; export default route; \ No newline at end of file diff --git a/src/utils/markdown.ts b/src/utils/markdown.ts new file mode 100644 index 0000000..06fa4f7 --- /dev/null +++ b/src/utils/markdown.ts @@ -0,0 +1,8 @@ +export function escapeDiscordMarkdown(message: string) { + let m = message; + m = m.replace(/_/gi, `\_`); + m = m.replace(/\*/gi, `\*`); + m = m.replace(/~/gi, `\~`); + m = m.replace(/||/gi, `\||`); + return m; +}; \ No newline at end of file