# Webhooks and run config

## Start bot using webhook

You can start a bot using [webhooks](https://core.telegram.org/bots/api#setwebhook). If you want to use webhooks in development, we recommend to using [ngrok](https://ngrok.com/)

{% code title="main.ts" %}

```typescript
import { NestGram } from 'nestgram';
import { AppModule } from './app/app.module';

async function bootstrap(): Promise<void> {
  const bot = new NestGram(
    'TOKEN', // bot token
    AppModule, // app module
    { url: 'https://mywebhook.com/' }, // webhook config
    { runType: 'webhook', logging: true }, // bot run config
  );
  
  await bot.start();
}

bootstrap();
```

{% endcode %}

## Webhook config

```typescript
{
  url: 'https://mywebhook.com/', // Required. Webhook url. If you want to run webhook locally, use ngrok for it. HTTPS only
  port: 80, // Optional. Webhook port. 80 by default. Supports 443, 80, 88, 8443 only
  secret_token: 'my_secret', // Optional. Webhook secret token
}
```

You can read more about webhook config [here](https://core.telegram.org/bots/api#setwebhook)

## Webhook/polling config

When you create the bot (**NestGram class**) you can pass **config as 3rd argument**. If you're using **webhook** to run a bot, your config is <https://core.telegram.org/bots/api#setwebhook> and this config is required (url field). If you're using **long polling** to run a bot (*by default*) your config is <https://core.telegram.org/bots/api#getupdates> (*config optional*)

## Run config

You can also pass run config (**NestGram options**) as 4th argument

<table><thead><tr><th width="184.58136007759995">Option</th><th width="192.99555501631306">Type</th><th width="150">Default value</th><th>Description</th></tr></thead><tbody><tr><td>runType</td><td>'webhook' | 'polling'</td><td>'polling'</td><td>How you want to run a bot: webhook or long polling</td></tr><tr><td>logging</td><td>boolean</td><td>true</td><td>If true, you will get logs about bot starting and getting updates in console</td></tr><tr><td>port</td><td>number</td><td>80</td><td>Port you want to run server using a webhook</td></tr><tr><td>fileLogging</td><td>boolean</td><td>true</td><td>If true, you will receive logs of received updates in nestgram/logs.md file</td></tr><tr><td>fileLoggingLimit</td><td>number</td><td>20</td><td>Log limit in nestgram/logs.md file</td></tr></tbody></table>
