From cb31ffa0d7983d40ee3d091a62fb3831500406db Mon Sep 17 00:00:00 2001 From: Kravets <57632712+kravetsone@users.noreply.github.com> Date: Wed, 15 May 2024 20:15:51 +0300 Subject: [PATCH] feat: improve webhookHandler typings and add support to respond --- src/webhook/index.ts | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/webhook/index.ts b/src/webhook/index.ts index df1c634..e5382dd 100644 --- a/src/webhook/index.ts +++ b/src/webhook/index.ts @@ -32,12 +32,23 @@ export type WebhookHandlers = keyof typeof frameworks; * }); * ``` */ -export function webhookHandler(bot: Bot, framework: keyof typeof frameworks) { - const frameworkAdapter = frameworks[framework] as FrameworkAdapter; +export function webhookHandler( + bot: Bot, + framework: Framework, +) { + const frameworkAdapter = frameworks[framework]; - return async (...args: any[]) => { - const { update } = frameworkAdapter(...args); + return (async (...args: any[]) => { + // @ts-expect-error + const { update, response } = frameworkAdapter(...args); await bot.updates.handleUpdate(await update); - }; + if (response) return response(); + }) as ReturnType<(typeof frameworks)[Framework]> extends { + response: () => any; + } + ? ( + ...args: Parameters<(typeof frameworks)[Framework]> + ) => ReturnType["response"]> + : (...args: Parameters<(typeof frameworks)[Framework]>) => void; }