import { Injectable, Type } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; import { ActionOptions, CashtagOptions, CommandOptions, EntityOptions, HashtagOptions, HearsOptions, InlineQueryOptions, MentionOptions, OnOptions, PhoneOptions, UpdateHookOptions, } from '../decorators'; import { DECORATORS } from '../telegraf.constants'; @Injectable() export class MetadataAccessorService { constructor(private readonly reflector: Reflector) {} isUpdate(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.UPDATE, target); } isUpdateHook(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.UPDATE_HOOK, target); } getUpdateHookMetadata( target: Type | Function, ): UpdateHookOptions | undefined { return this.reflector.get(DECORATORS.UPDATE_HOOK, target); } isTelegrafUse(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.USE, target); } isTelegrafOn(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.ON, target); } getTelegrafOnMetadata(target: Type | Function): OnOptions | undefined { return this.reflector.get(DECORATORS.ON, target); } isTelegrafHears(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.HEARS, target); } getTelegrafHearsMetadata( target: Type | Function, ): HearsOptions | undefined { return this.reflector.get(DECORATORS.HEARS, target); } isTelegrafCommand(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.COMMAND, target); } getTelegrafCommandMetadata( target: Type | Function, ): CommandOptions | undefined { return this.reflector.get(DECORATORS.COMMAND, target); } isTelegrafStart(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.START, target); } isTelegrafHelp(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.HELP, target); } isTelegrafSettings(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.SETTINGS, target); } isTelegrafEntity(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.ENTITY, target); } getTelegrafEntityMetadata( target: Type | Function, ): EntityOptions | undefined { return this.reflector.get(DECORATORS.ENTITY, target); } isTelegrafMention(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.MENTION, target); } getTelegrafMentionMetadata( target: Type | Function, ): MentionOptions | undefined { return this.reflector.get(DECORATORS.MENTION, target); } isTelegrafPhone(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.PHONE, target); } getTelegrafPhoneMetadata( target: Type | Function, ): PhoneOptions | undefined { return this.reflector.get(DECORATORS.PHONE, target); } isTelegrafHashtag(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.HASHTAG, target); } getTelegrafHashtagMetadata( target: Type | Function, ): HashtagOptions | undefined { return this.reflector.get(DECORATORS.HASHTAG, target); } isTelegrafCashtag(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.CASHTAG, target); } getTelegrafCashtagMetadata( target: Type | Function, ): CashtagOptions | undefined { return this.reflector.get(DECORATORS.CASHTAG, target); } isTelegrafAction(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.ACTION, target); } getTelegrafActionMetadata( target: Type | Function, ): ActionOptions | undefined { return this.reflector.get(DECORATORS.ACTION, target); } isTelegrafInlineQuery(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.INLINE_QUERY, target); } getTelegrafInlineQueryMetadata( target: Type | Function, ): InlineQueryOptions | undefined { return this.reflector.get(DECORATORS.INLINE_QUERY, target); } isTelegrafGameQuery(target: Type | Function): boolean { if (!target) { return false; } return !!this.reflector.get(DECORATORS.GAME_QUERY, target); } }