36 lines
1.0 KiB
TypeScript
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;
|
|
} |