---
id: from-v1-to-v2
title: From v1 to v2
sidebar_label: From v1 to v2
slug: /migrating/from-v1-to-v2
---

## Remove `Telegraf` prefix
If you previously used decorators with the prefix `Telegraf` in the decorator name (such as `@TelegrafOn()` or `@TelegrafHelp()`) replace them with the same decorators but without the prefix `Telegraf`, such as `@On()`, `@Start()`, `@Command()` and so on.

## `@Update()` decorator
Since v2, `nestjs-telegraf` looks for all update handlers only inside individual classes, under the `@Update()` decorator.

Previously, you could declare a handler anywhere, for example:
```typescript title="src/cats/cats.provider.ts"
import { Injectable } from '@nestjs/common';
import { Command } from 'nestjs-telegraf';

@Injectable()
export class CatsProvider {
  @Command('cats')
  async helpCommand(ctx: TelegrafContext) {
    await ctx.reply('Meow.');  
  }  
}
```

Now you must explicitly bind the class, for Telegram Bot Api update handlers:
```typescript {3} title="src/cats/cats.updates.ts"
import { Update, Ctx } from 'nestjs-telegraf';

@Update()
export class HelpUpdate {
  @Command('help')
  async helpCommand(@Ctx() ctx: TelegrafContext) {
    await ctx.reply('Help command.');  
  }  
}
```

Treat the `@Update()` decorator like the `@Controller()` decorator, but to capture Telegram Bot Api updates.