sd-telegram-bot/src/context.ts

36 lines
1.0 KiB
TypeScript

import { AutoChatActionFlavor } from "@grammyjs/auto-chat-action";
import { HydrateFlavor } from "@grammyjs/hydrate";
import { ParseModeFlavor } from "@grammyjs/parse-mode";
import { Api, Context as DefaultContext } from "grammy";
import { Update, UserFromGetMe } from "grammy/types";
import { Logger } from "pino";
type ExtendedContextFlavor = {
logger: Logger;
};
export type Context = ParseModeFlavor<
HydrateFlavor<
DefaultContext &
ExtendedContextFlavor &
AutoChatActionFlavor
>
>;
interface Dependencies {
logger: Logger;
}
export function createContextConstructor({ logger }: Dependencies) {
return class extends DefaultContext implements ExtendedContextFlavor {
logger: Logger;
constructor(update: Update, api: Api, me: UserFromGetMe) {
super(update, api, me);
this.logger = logger.child({
update_id: this.update.update_id,
});
}
} as unknown as new (update: Update, api: Api, me: UserFromGetMe) => Context;
}