# Entities: url, email and other

## What are entities?

Entity it's part of a message with unique content (e.g. url, email, phone\_number, hashtag, cashtag and other). You can read about entity and see all entity types [here](https://core.telegram.org/bots/api#messageentity)

## Listen to text message with some entity

To listen to a text message with some entity, use `@OnEntity` decorator

{% hint style="info" %}
Optional. `@OnEntity` takes the entity type that you want to listen to as argument
{% endhint %}

{% code title="app.controller.ts" %}

```typescript
import { OnEntity, Controller } from 'nestgram';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService?: AppService) {}

  @OnEntity('email')
  async onEmail(): Promise<string> {
    return 'I got your email!';
  }
}
```

{% endcode %}

## Get entity from a text message

To get an entity from a text message, use @Entity parameter decorator, and pass the entity type you want to get

{% hint style="info" %}
Optional. `@Entity` takes the entity type you want to get to as argument
{% endhint %}

{% code title="app.controller.ts" %}

```typescript
import { OnEntity, Controller, Entity, IEntity } from 'nestgram';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService?: AppService) {}

  @OnEntity('email')
  async onEmail(@Entity('email') email: IEntity): Promise<string> {
    return `I got your email! ${email?.result}`;
  }
}
```

{% endcode %}
