2020-09-10 11:23:04 +03:00
---
id: decorators
title: Decorators
sidebar_label: Decorators
slug: /api-reference/decorators
---
:::caution
The described functionality is under development, the functionality has not been tested and can be changed at any time!
:::
### Update
`@Update` class decorator, it's like NestJS [`@Controller` ](https://docs.nestjs.com/controllers ) decorator, but for [Telegram Bot API updates ](https://core.telegram.org/bots/api#getting-updates ).
2021-01-03 01:30:57 +03:00
It is required for the class that will receive updates from Telegram.
2020-09-10 11:23:04 +03:00
```typescript {3}
import { Update, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
...
}
```
### Message
Use `@Message` method decorator for handling new incoming message of any kind — text, photo, sticker, etc.
```typescript {5}
import { Update, Message, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@Message ()
message(ctx: Context) {
ctx.reply(`You say: ${ctx.message.text}`);
}
}
```
### EditedMessage
Use `@EditedMessage` method decorator for handling new version of a message that is known to the bot and was edited.
```typescript {5}
import { Update, EditedMessage, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@EditedMessage ()
editedMessage(ctx: Context) {
...
}
}
```
### ChannelPost
Use `@ChannelPost` method decorator for handling new incoming channel post of any kind — text, photo, sticker, etc.
```typescript {5}
import { Update, ChannelPost, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@ChannelPost ()
channelPost(ctx: Context) {
...
}
}
```
### EditedChannelPost
Use `@EditedChannelPost` method decorator for handling new version of a channel post that is known to the bot and was edited.
```typescript {5}
import { Update, EditedChannelPost, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@EditedChannelPost ()
editedChannelPost(ctx: Context) {
...
}
}
```
### InlineQuery
Use `@InlineQuery` method decorator for handling new incoming inline query.
```typescript {5}
import { Update, InlineQuery, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@InlineQuery ()
inlineQuery(ctx: Context) {
...
}
}
```
The `@InlineQuery` decorator can take a `triggers` option to handle inline query with specific value.
```typescript {6}
import { Update, InlineQuery, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@InlineQuery ({
triggers: 'trigger' // string/string[]/RegEx/RegEx[]
})
inlineQuery(ctx: Context) {
...
}
}
```
### ChosenInlineResult
Use `@ChosenInlineResult` method decorator for handling result of an inline query that was chosen by a user and sent to their chat partner.
```typescript {5}
import { Update, ChosenInlineResult, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@ChosenInlineResult ()
chosenInlineResult(ctx: Context) {
...
}
}
```
### CallbackQuery
Use `@CallbackQuery` method decorator for handling new incoming callback query.
```typescript {5}
import { Update, CallbackQuery, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@CallbackQuery ()
callbackQuery(ctx: Context) {
...
}
}
```
### ShippingQuery
Use `@ShippingQuery` method decorator for handling new incoming shipping query. Only for invoices with flexible price.
```typescript {5}
import { Update, ShippingQuery, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@ShippingQuery ()
shippingQuery(ctx: Context) {
...
}
}
```
### PreCheckoutQuery
Use `@PreCheckoutQuery` method decorator for handling new incoming pre-checkout query. Contains full information about checkout.
```typescript {5}
import { Update, PreCheckoutQuery, Context } from 'nestjs-telegraf';
@Update ()
export class SomeBotService {
@PreCheckoutQuery ()
preCheckoutQuery(ctx: Context) {
...
}
}
```