import { ParamData } from '@nestjs/common'; import { ParamsFactory } from '@nestjs/core/helpers/external-context-creator'; import { Context } from 'grammy'; import { TelegrafParamtype } from '../enums/telegraf-paramtype.enum'; export class TelegrafParamsFactory implements ParamsFactory { exchangeKeyForValue( type: TelegrafParamtype, data: ParamData, args: unknown[], ): unknown { const ctx = args[0] as Context; const next = args[1] as Function; switch (type) { case TelegrafParamtype.CONTEXT: return ctx; case TelegrafParamtype.NEXT: return next; case TelegrafParamtype.SENDER: return data && ctx.from ? ctx.from[data as string] : ctx.from; case TelegrafParamtype.MESSAGE: return data && ctx.message ? ctx.message[data as string] : ctx.message; default: return null; } } }