From 4d3bab1b58b7163e668f59c099c4c19aae23c8ab Mon Sep 17 00:00:00 2001 From: ArnabXD Date: Fri, 29 Jul 2022 12:49:04 +0530 Subject: [PATCH 1/5] feat: allow COMMAND & INPUT prefix customization --- deps.ts | 7 ++++++- env.ts | 30 +++++++++++++++++++++++++++++- handlers/command_handler.ts | 9 +++++---- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/deps.ts b/deps.ts index d3c7954..2f2e87c 100644 --- a/deps.ts +++ b/deps.ts @@ -1,6 +1,11 @@ // Internal dependencies export { config } from "https://deno.land/std@0.149.0/dotenv/mod.ts"; -export { cleanEnv, num, str } from "https://deno.land/x/envalid@v0.0.3/mod.ts"; +export { + cleanEnv, + num, + str, + makeValidator, +} from "https://deno.land/x/envalid@v0.0.3/mod.ts"; export { dirname, fromFileUrl, diff --git a/env.ts b/env.ts index 03299b4..f35ccc7 100644 --- a/env.ts +++ b/env.ts @@ -1,9 +1,37 @@ -import { cleanEnv, config, num, str } from "./deps.ts"; +import { cleanEnv, config, num, str, makeValidator } from "./deps.ts"; await config({ export: true }); +// https://stackoverflow.com/a/54256858/12250600 +const PREFIX_REGEX = /^[^\p{L}\d\s@#\$]$/u; + +const cmdPrefix = makeValidator((input) => { + if (PREFIX_REGEX.test(input)) { + return input; + } + console.warn( + "COMMAND_PREFIX falling back to '\\', single symbol expected excluding @,#,$" + ); + return "\\"; +}); + +const inputPrefix = makeValidator((input) => { + if ( + PREFIX_REGEX.test(input) && + input !== Deno.env.toObject().COMMAND_PREFIX + ) { + return input; + } + console.warn( + "INPUT_PREFIX falling back to '>', single symbol expected excluding @,#,$ & COMMAND_PREFIX" + ); + return "\\"; +}); + export default cleanEnv(Deno.env.toObject(), { STRING_SESSION: str(), APP_ID: num(), APP_HASH: str(), + COMMAND_PREFIX: cmdPrefix({ default: "\\" }), + INPUT_PREFIX: inputPrefix({ default: ">" }), }); diff --git a/handlers/command_handler.ts b/handlers/command_handler.ts index cfb4c41..30bfbc1 100644 --- a/handlers/command_handler.ts +++ b/handlers/command_handler.ts @@ -1,5 +1,6 @@ import { HandlerFuncParams } from "./handler.ts"; import { MessageHandler } from "./message_handler.ts"; +import env from "../env.ts"; export interface CommandHandlerFuncParams { args: string[]; @@ -25,7 +26,7 @@ export class CommandHandler extends MessageHandler { constructor( public name: string, public func: CommandHandlerFunc, - opts?: CommandHandlerOpts, + opts?: CommandHandlerOpts ) { super(func); this.opts = opts ?? {}; @@ -37,7 +38,7 @@ export class CommandHandler extends MessageHandler { return false; } const { text } = event.message; - if (!["\\", ">"].includes(text[0])) { + if (![env.COMMAND_PREFIX, env.INPUT_PREFIX].includes(text[0])) { return false; } const command = text.split(/\s/)[0].slice(1); @@ -54,14 +55,14 @@ export class CommandHandler extends MessageHandler { const inputType = message[0]; const reply = await event.message.getReplyMessage(); switch (inputType) { - case "\\": + case env.COMMAND_PREFIX: input = (this.opts?.rawInput ? message : text) .split("\n") .slice(1) .join("\n") .trim(); break; - case ">": + case env.INPUT_PREFIX: if (reply && reply.text) { input = this.opts?.rawInput ? reply.message : reply.text; } From fdd246e8c9861531a3719f493aea456de1adefae Mon Sep 17 00:00:00 2001 From: ArnabXD Date: Fri, 29 Jul 2022 12:50:45 +0530 Subject: [PATCH 2/5] chore: fix deno format --- deps.ts | 2 +- env.ts | 6 +++--- handlers/command_handler.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps.ts b/deps.ts index 2f2e87c..188ded3 100644 --- a/deps.ts +++ b/deps.ts @@ -2,9 +2,9 @@ export { config } from "https://deno.land/std@0.149.0/dotenv/mod.ts"; export { cleanEnv, + makeValidator, num, str, - makeValidator, } from "https://deno.land/x/envalid@v0.0.3/mod.ts"; export { dirname, diff --git a/env.ts b/env.ts index f35ccc7..fd2f92e 100644 --- a/env.ts +++ b/env.ts @@ -1,4 +1,4 @@ -import { cleanEnv, config, num, str, makeValidator } from "./deps.ts"; +import { cleanEnv, config, makeValidator, num, str } from "./deps.ts"; await config({ export: true }); @@ -10,7 +10,7 @@ const cmdPrefix = makeValidator((input) => { return input; } console.warn( - "COMMAND_PREFIX falling back to '\\', single symbol expected excluding @,#,$" + "COMMAND_PREFIX falling back to '\\', single symbol expected excluding @,#,$", ); return "\\"; }); @@ -23,7 +23,7 @@ const inputPrefix = makeValidator((input) => { return input; } console.warn( - "INPUT_PREFIX falling back to '>', single symbol expected excluding @,#,$ & COMMAND_PREFIX" + "INPUT_PREFIX falling back to '>', single symbol expected excluding @,#,$ & COMMAND_PREFIX", ); return "\\"; }); diff --git a/handlers/command_handler.ts b/handlers/command_handler.ts index 30bfbc1..496980b 100644 --- a/handlers/command_handler.ts +++ b/handlers/command_handler.ts @@ -26,7 +26,7 @@ export class CommandHandler extends MessageHandler { constructor( public name: string, public func: CommandHandlerFunc, - opts?: CommandHandlerOpts + opts?: CommandHandlerOpts, ) { super(func); this.opts = opts ?? {}; From 5e2814366b90fb22c351435162bedf2fed20d0f3 Mon Sep 17 00:00:00 2001 From: ArnabXD Date: Fri, 29 Jul 2022 13:06:59 +0530 Subject: [PATCH 3/5] chore: enhance warn clarity --- env.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env.ts b/env.ts index fd2f92e..02a3b24 100644 --- a/env.ts +++ b/env.ts @@ -23,7 +23,7 @@ const inputPrefix = makeValidator((input) => { return input; } console.warn( - "INPUT_PREFIX falling back to '>', single symbol expected excluding @,#,$ & COMMAND_PREFIX", + "INPUT_PREFIX falling back to '>', single symbol expected excluding @,#,$ and COMMAND_PREFIX", ); return "\\"; }); From 78758eb2df2e5770eea7255b06ddffbe5398e4a8 Mon Sep 17 00:00:00 2001 From: ArnabXD Date: Fri, 29 Jul 2022 13:10:47 +0530 Subject: [PATCH 4/5] chore: access env using get method --- env.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env.ts b/env.ts index 02a3b24..60e53ee 100644 --- a/env.ts +++ b/env.ts @@ -18,7 +18,7 @@ const cmdPrefix = makeValidator((input) => { const inputPrefix = makeValidator((input) => { if ( PREFIX_REGEX.test(input) && - input !== Deno.env.toObject().COMMAND_PREFIX + input !== Deno.env.get("COMMAND_PREFIX") ) { return input; } From e6054ef3039245b2109f67a6b1cd84f1aebfbd5f Mon Sep 17 00:00:00 2001 From: ArnabXD Date: Fri, 29 Jul 2022 13:12:50 +0530 Subject: [PATCH 5/5] chore: accept suggesstions --- env.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/env.ts b/env.ts index 60e53ee..91d9dcc 100644 --- a/env.ts +++ b/env.ts @@ -10,20 +10,17 @@ const cmdPrefix = makeValidator((input) => { return input; } console.warn( - "COMMAND_PREFIX falling back to '\\', single symbol expected excluding @,#,$", + "Falling back to '\\' for COMMAND_PREFIX, a single symbol excluding @, #, $ was expected", ); return "\\"; }); const inputPrefix = makeValidator((input) => { - if ( - PREFIX_REGEX.test(input) && - input !== Deno.env.get("COMMAND_PREFIX") - ) { + if (PREFIX_REGEX.test(input) && input !== Deno.env.get("COMMAND_PREFIX")) { return input; } console.warn( - "INPUT_PREFIX falling back to '>', single symbol expected excluding @,#,$ and COMMAND_PREFIX", + "Falling back to '>' for INPUT_PREFIX, a single symbol excluding @, #, $ and COMMAND_PREFIX was expected", ); return "\\"; });