mirror of
				https://github.com/Maks1mS/nestjs-telegraf.git
				synced 2025-10-31 05:52:17 +03:00 
			
		
		
		
	docs: remove full docs from README.md
This commit is contained in:
		
							
								
								
									
										115
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										115
									
								
								README.md
									
									
									
									
									
								
							| @@ -11,17 +11,18 @@ | |||||||
|  |  | ||||||
| [Telegraf](https://github.com/telegraf/telegraf) module for [NestJS](https://github.com/nestjs/nest). | [Telegraf](https://github.com/telegraf/telegraf) module for [NestJS](https://github.com/nestjs/nest). | ||||||
|  |  | ||||||
|  | ## Documentation | ||||||
|  | If you want to dive fully into NestJS Telegraf then don't waste your time in this dump, check out the [documentation site](https://nestjs-telegraf.vercel.com). | ||||||
|  |  | ||||||
| ## Installation | ## Installation | ||||||
|  |  | ||||||
| ```bash | ```bash | ||||||
| $ npm i nestjs-telegraf | $ npm i nestjs-telegraf | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| Once the installation process is complete, we can import the TelegrafModule into the root AppModule. | Once the installation process is complete, we can import the `TelegrafModule` into the root `AppModule`: | ||||||
|  |  | ||||||
| ```typescript | ```typescript | ||||||
| /* app.module.ts */ |  | ||||||
|  |  | ||||||
| import { Module } from '@nestjs/common'; | import { Module } from '@nestjs/common'; | ||||||
| import { TelegrafModule } from 'nestjs-telegraf'; | import { TelegrafModule } from 'nestjs-telegraf'; | ||||||
|  |  | ||||||
| @@ -35,16 +36,9 @@ import { TelegrafModule } from 'nestjs-telegraf'; | |||||||
| export class AppModule {} | export class AppModule {} | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| The `forRoot()` method accepts the same configuration object as Telegraf class constructor from the Telegraf package, as described [here](https://telegraf.js.org/#/?id=constructor). | Then add some decorators into the `app.service.ts` for handling Telegram bot API updates: | ||||||
|  |  | ||||||
| ## Telegraf methods |  | ||||||
| Each Telegraf instance method described [here](https://telegraf.js.org/#/?id=telegraf) has own decorator in `nestjs-telegraf` package. The name of the decorator corresponds to the name of the Telegraf method. For example [`@Hears`](https://telegraf.js.org/#/?id=hears), [`@On`](https://telegraf.js.org/#/?id=on), [`@Action`](https://telegraf.js.org/#/?id=action) and so on. |  | ||||||
|  |  | ||||||
| Now let's try to repeat the example from the Telegraf [documentation page](https://telegraf.js.org/#/?id=example). |  | ||||||
|  |  | ||||||
| ```typescript | ```typescript | ||||||
| /* app.service.ts */ |  | ||||||
|  |  | ||||||
| import { Injectable } from '@nestjs/common'; | import { Injectable } from '@nestjs/common'; | ||||||
| import { | import { | ||||||
|   Start, |   Start, | ||||||
| @@ -78,105 +72,6 @@ export class AppService { | |||||||
| } | } | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## Bot injection |  | ||||||
| At times you may need to access the native `Telegraf` instance. For example, you may want to connect stage middleware. You can inject the Telegraf by using the `@InjectBot()` decorator as follows: |  | ||||||
| ```typescript |  | ||||||
| import { Injectable } from '@nestjs/common'; |  | ||||||
| import { InjectBot, TelegrafProvider } from 'nestjs-telegraf'; |  | ||||||
|  |  | ||||||
| @Injectable() |  | ||||||
| export class BotSettingsService { |  | ||||||
|   constructor(@InjectBot() private bot: TelegrafProvider) {} |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Async configuration |  | ||||||
| When you need to pass module options asynchronously instead of statically, use the forRootAsync() method. As with most dynamic modules, Nest provides several techniques to deal with async configuration. |  | ||||||
|  |  | ||||||
| One technique is to use a factory function: |  | ||||||
|  |  | ||||||
| ```typescript |  | ||||||
| TelegrafModule.forRootAsync({ |  | ||||||
|   useFactory: () => ({ |  | ||||||
|     token: 'TELEGRAM_BOT_TOKEN', |  | ||||||
|   }), |  | ||||||
| }); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Like other [factory providers](https://docs.nestjs.com/fundamentals/custom-providers#factory-providers-usefactory), our factory function can be async and can inject dependencies through inject. |  | ||||||
|  |  | ||||||
| ```typescript |  | ||||||
| TelegrafModule.forRootAsync({ |  | ||||||
|   imports: [ConfigModule.forFeature(telegrafModuleConfig)], |  | ||||||
|   useFactory: async (configService: ConfigService) => ({ |  | ||||||
|     token: configService.get<string>('TELEGRAM_BOT_TOKEN'), |  | ||||||
|   }), |  | ||||||
|   inject: [ConfigService], |  | ||||||
| }); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Alternatively, you can configure the TelegrafModule using a class instead of a factory, as shown below: |  | ||||||
|  |  | ||||||
| ```typescript |  | ||||||
| TelegrafModule.forRootAsync({ |  | ||||||
|   useClass: TelegrafConfigService, |  | ||||||
| }); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| The construction above instantiates `TelegrafConfigService` inside `TelegrafModule`, using it to create the required options object. Note that in this example, the `TelegrafConfigService` has to implement the `TelegrafOptionsFactory` interface, as shown below. The `TelegrafModule` will call the `createTelegrafOptions()` method on the instantiated object of the supplied class. |  | ||||||
|  |  | ||||||
| ```typescript |  | ||||||
| @Injectable() |  | ||||||
| class TelegrafConfigService implements TelegrafOptionsFactory { |  | ||||||
|   createTelegrafOptions(): TelegrafModuleOptions { |  | ||||||
|     return { |  | ||||||
|       token: 'TELEGRAM_BOT_TOKEN', |  | ||||||
|     }; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| If you want to reuse an existing options provider instead of creating a private copy inside the `TelegrafModule`, use the `useExisting` syntax. |  | ||||||
|  |  | ||||||
| ```typescript |  | ||||||
| TelegrafModule.forRootAsync({ |  | ||||||
|   imports: [ConfigModule.forFeature(telegrafModuleConfig)], |  | ||||||
|   useExisting: ConfigService, |  | ||||||
| }); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ## Webhooks |  | ||||||
| If you want to configure a telegram bot webhook, you need to get a middleware from `TelegrafProvider` for connect it in your `main.ts` file. |  | ||||||
|   |  | ||||||
| To access it, you must use the `app.get()` method, followed by the provider reference: |  | ||||||
| ```typescript |  | ||||||
| const telegrafProvider = app.get('TelegrafProvider'); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| Now you can connect middleware: |  | ||||||
| ```typescript |  | ||||||
| app.use(telegrafProvider.webhookCallback('/secret-path')); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| The last step is to specify launchOptions in `forRoot` method: |  | ||||||
| ```typescript |  | ||||||
| TelegrafModule.forRootAsync({ |  | ||||||
|   imports: [ConfigModule.forFeature(telegrafModuleConfig)], |  | ||||||
|   useFactory: async (configService: ConfigService) => ({ |  | ||||||
|     token: configService.get<string>('TELEGRAM_BOT_TOKEN'), |  | ||||||
|     launchOptions: { |  | ||||||
|       webhook: { |  | ||||||
|         domain: 'domain.tld', |  | ||||||
|         hookPath: '/secret-path', |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   }), |  | ||||||
|   inject: [ConfigService], |  | ||||||
| }); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Support | ## Support | ||||||
|  |  | ||||||
| Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). | Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| module.exports = { | module.exports = { | ||||||
|   title: 'NestJS Telegraf', |   title: 'NestJS Telegraf', | ||||||
|   tagline: 'Powerful Nest module for easy and fast creation Telegram bots', |   tagline: 'Powerful Nest module for easy and fast creation Telegram bots', | ||||||
|   url: 'https://your-docusaurus-test-site.com', |   url: 'https://nestjs-telegraf.vercel.com', | ||||||
|   baseUrl: '/', |   baseUrl: '/', | ||||||
|   onBrokenLinks: 'throw', |   onBrokenLinks: 'throw', | ||||||
|   favicon: 'img/favicon.ico', |   favicon: 'img/favicon.ico', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user