nestjs-telegraf/src/factories/telegraf-params-factory.ts

29 lines
882 B
TypeScript
Raw Normal View History

import { ParamData } from '@nestjs/common';
2021-01-05 12:37:04 +03:00
import { ParamsFactory } from '@nestjs/core/helpers/external-context-creator';
2022-11-20 14:13:48 +03:00
import { Context } from 'grammy';
2021-01-03 01:30:57 +03:00
import { TelegrafParamtype } from '../enums/telegraf-paramtype.enum';
2021-01-05 12:37:04 +03:00
export class TelegrafParamsFactory implements ParamsFactory {
exchangeKeyForValue(
type: TelegrafParamtype,
data: ParamData,
args: unknown[],
2021-01-05 12:37:04 +03:00
): unknown {
const ctx = args[0] as Context;
const next = args[1] as Function;
2021-01-05 12:37:04 +03:00
switch (type) {
2021-01-03 01:30:57 +03:00
case TelegrafParamtype.CONTEXT:
2021-01-05 12:37:04 +03:00
return ctx;
2021-01-03 01:30:57 +03:00
case TelegrafParamtype.NEXT:
2021-01-05 12:37:04 +03:00
return next;
2021-01-03 01:30:57 +03:00
case TelegrafParamtype.SENDER:
return data && ctx.from ? ctx.from[data as string] : ctx.from;
2021-01-03 01:30:57 +03:00
case TelegrafParamtype.MESSAGE:
return data && ctx.message ? ctx.message[data as string] : ctx.message;
2021-01-03 01:30:57 +03:00
default:
return null;
}
}
}