Skip to content

Commit

Permalink
feat: improve webhookHandler typings and add support to respond
Browse files Browse the repository at this point in the history
  • Loading branch information
kravetsone committed May 15, 2024
1 parent ff58d20 commit cb31ffa
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions src/webhook/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<Framework extends keyof typeof frameworks>(
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<ReturnType<(typeof frameworks)[Framework]>["response"]>
: (...args: Parameters<(typeof frameworks)[Framework]>) => void;
}

0 comments on commit cb31ffa

Please sign in to comment.