mirror of
https://github.com/Maks1mS/nestjs-telegraf.git
synced 2025-01-12 07:01:26 +03:00
Merge pull request #31 from alexeynobody/master
Add support for proxy and other features in TelegrafOptions
This commit is contained in:
commit
af1ef0a201
62
README.md
62
README.md
@ -140,6 +140,68 @@ export class BotService {
|
|||||||
|
|
||||||
See https://github.com/bukhalo/nestjs-telegraf/issues/7#issuecomment-577582322
|
See https://github.com/bukhalo/nestjs-telegraf/issues/7#issuecomment-577582322
|
||||||
|
|
||||||
|
#### Telegraf proxy usage
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
|
||||||
|
/* bot.config.ts */
|
||||||
|
|
||||||
|
import { registerAs } from '@nestjs/config'
|
||||||
|
|
||||||
|
interface Config {
|
||||||
|
token: string
|
||||||
|
socksHost: string
|
||||||
|
socksPort: string | number
|
||||||
|
socksUser: string
|
||||||
|
socksPassword: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export default registerAs(
|
||||||
|
'bot',
|
||||||
|
(): Config => ({
|
||||||
|
token: process.env.TELEGRAM_BOT_TOKEN,
|
||||||
|
socksHost: process.env.TELEGRAM_BOT_SOCKS_HOST,
|
||||||
|
socksPort: process.env.TELEGRAM_BOT_SOCKS_PORT,
|
||||||
|
socksUser: process.env.TELEGRAM_BOT_SOCKS_USER,
|
||||||
|
socksPassword: process.env.TELEGRAM_BOT_SOCKS_PASS,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
|
||||||
|
/* telegraf-config.service.ts */
|
||||||
|
|
||||||
|
import { Injectable } from '@nestjs/common'
|
||||||
|
import { ConfigService } from '@nestjs/config'
|
||||||
|
import { TelegrafModuleOptions, TelegrafOptionsFactory } from 'nestjs-telegraf'
|
||||||
|
import { SocksProxyAgent } from 'socks-proxy-agent'
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class TelegrafConfigService implements TelegrafOptionsFactory {
|
||||||
|
private agent
|
||||||
|
|
||||||
|
constructor(private readonly configService: ConfigService) {}
|
||||||
|
|
||||||
|
createTelegrafOptions(): TelegrafModuleOptions {
|
||||||
|
const proxyConfig = {
|
||||||
|
host: this.configService.get('bot.socksHost'),
|
||||||
|
port: this.configService.get('bot.socksPort'),
|
||||||
|
userId: this.configService.get('bot.socksUser'),
|
||||||
|
password: this.configService.get('bot.socksPassword'),
|
||||||
|
}
|
||||||
|
this.agent = new SocksProxyAgent(proxyConfig)
|
||||||
|
|
||||||
|
return {
|
||||||
|
token: this.configService.get('bot.token'),
|
||||||
|
telegrafOptions: { telegram: { agent: this.agent } },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
### Telegram
|
### Telegram
|
||||||
|
|
||||||
#### Telegram methods usage
|
#### Telegram methods usage
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
import { ModuleMetadata, Type } from '@nestjs/common/interfaces'
|
import { ModuleMetadata, Type } from '@nestjs/common/interfaces'
|
||||||
|
import { TelegrafOptions } from 'telegraf'
|
||||||
|
|
||||||
export interface TelegrafModuleOptions {
|
export interface TelegrafModuleOptions {
|
||||||
token: string
|
token: string
|
||||||
sitePublicUrl?: string
|
sitePublicUrl?: string
|
||||||
|
telegrafOptions?: TelegrafOptions
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface TelegrafOptionsFactory {
|
export interface TelegrafOptionsFactory {
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
import { Injectable, Inject, Logger } from '@nestjs/common'
|
import { Inject, Injectable, Logger } from '@nestjs/common'
|
||||||
import { ModuleRef } from '@nestjs/core'
|
import { ModuleRef } from '@nestjs/core'
|
||||||
import Telegraf, { ContextMessageUpdate } from 'telegraf'
|
|
||||||
import { flatten, head } from 'lodash'
|
import { flatten, head } from 'lodash'
|
||||||
|
import Telegraf, { ContextMessageUpdate } from 'telegraf'
|
||||||
import { TelegramCatch, TelegramActionHandler } from './decorators'
|
import { TelegramActionHandler, TelegramCatch } from './decorators'
|
||||||
import { TokenInjectionToken } from './telegraf.constants'
|
import { InvalidConfigurationException } from './exeptions'
|
||||||
import {
|
import {
|
||||||
|
ContextTransformer,
|
||||||
|
Handler,
|
||||||
TelegrafOptionsFactory,
|
TelegrafOptionsFactory,
|
||||||
TelegramErrorHandler,
|
TelegramErrorHandler,
|
||||||
Handler,
|
|
||||||
ContextTransformer,
|
|
||||||
} from './interfaces'
|
} from './interfaces'
|
||||||
import { InvalidConfigurationException } from './exeptions'
|
import { TokenInjectionToken } from './telegraf.constants'
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TelegrafService {
|
export class TelegrafService {
|
||||||
@ -23,9 +22,13 @@ export class TelegrafService {
|
|||||||
public constructor(
|
public constructor(
|
||||||
@Inject(TokenInjectionToken) options: TelegrafOptionsFactory
|
@Inject(TokenInjectionToken) options: TelegrafOptionsFactory
|
||||||
) {
|
) {
|
||||||
const { token, sitePublicUrl } = options.createTelegrafOptions()
|
const {
|
||||||
|
token,
|
||||||
|
sitePublicUrl,
|
||||||
|
telegrafOptions,
|
||||||
|
} = options.createTelegrafOptions()
|
||||||
this.sitePublicUrl = sitePublicUrl
|
this.sitePublicUrl = sitePublicUrl
|
||||||
this.bot = new Telegraf(token)
|
this.bot = new Telegraf(token, telegrafOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(ref: ModuleRef, devMode: boolean = false) {
|
public init(ref: ModuleRef, devMode: boolean = false) {
|
||||||
|
Loading…
Reference in New Issue
Block a user