일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 러스트 기초 학습
- 컨트렉트 배포 자동화
- vue기초
- multicall
- 러스트기초
- 머신러닝기초
- ethers
- 스마트컨트렉트프록시
- 컨트렉트 동일한 함수이름 호출
- SBT표준
- ethers typescript
- nestjs 튜토리얼
- ambiguous function description
- Vue
- ethers websocket
- nest.js설명
- 프록시배포구조
- 스마트컨트렉트 예약어 함수이름 중복
- ethers v6
- 스마트컨트렉트테스트
- 스마트컨트렉트 함수이름 중복 호출
- git rebase
- chainlink 설명
- ethers type
- 깃허브명령어
- Vue.js
- 러스트 기초
- 체인의정석
- 스마트 컨트렉트 함수이름 중복
- rust 기초
Archives
- Today
- Total
체인의정석
nestjs-telegraf 사용해보기 (Nest.js 텔레그램봇) 본문
728x90
반응형
https://nestjs-telegraf.vercel.app/
npm i nestjs-telegraf --save
먼저 해당 모듈을 설치해준다.
import { Module } from '@nestjs/common';
import { TelegrafModule } from 'nestjs-telegraf';
@Module({
imports: [
TelegrafModule.forRoot({
token: 'TELEGRAM_BOT_TOKEN',
})
],
})
export class AppModule {}
설치 후 , Module에서 TelegrafModule을 import 해주기, TELEGRAM_BOT_TOKEN은 env에서 따로 지정해 주어야한다.아래는 node.js의 telegraph인데 구조는 이것과 동일하다고 한다.
https://telegraf.js.org/#/?id=constructor
https://it-timehacker.tistory.com/447
위의 포스팅에 텔레그램 봇 만드는 법이 있는데 여기서 봇 키까지만 빼온다.
기본적인 사용방법은 다음 예제에서 볼 수 있다.
import {
Update,
Ctx,
Start,
Help,
On,
Hears,
} from 'nestjs-telegraf';
import { TelegrafContext } from './common/interfaces/telegraf-context.interface.ts';
@Update()
export class AppUpdate {
@Start()
async start(@Ctx() ctx: TelegrafContext) {
await ctx.reply('Welcome');
}
@Help()
async help(@Ctx() ctx: TelegrafContext) {
await ctx.reply('Send me a sticker');
}
@On('sticker')
async on(@Ctx() ctx: TelegrafContext) {
await ctx.reply('👍');
}
@Hears('hi')
async hears(@Ctx() ctx: TelegrafContext) {
await ctx.reply('Hey there');
}
}
또한 여러개 봇을 사용하는 경우 다음과 같이 bot name을 지정해 주어야 한다고 한다.
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TelegrafModule } from 'nestjs-telegraf';
@Module({
imports: [
ConfigModule.forRoot(),
TelegrafModule.forRootAsync({
imports: [ConfigModule],
botName: 'cat',
useFactory: (configService: ConfigService) => ({
token: configService.get<string>('CAT_BOT_TOKEN'),
}),
inject: [ConfigService],
}),
TelegrafModule.forRootAsync({
imports: [ConfigModule.forFeature(telegrafModuleConfig)],
botName: 'dog',
useFactory: async (configService: ConfigService) => ({
token: configService.get<string>('DOG_BOT_TOKEN'),
}),
inject: [ConfigService],
}),
],
})
export class AppModule {}
그리고 여기에 해당되는 inject도 각각 따로 만들어 주어야한다.
또한 텔레그램 봇에서 특정 정보를 현재 구독하려는 상황이므로
https://www.npmjs.com/package/@nestjs/schedule
해당 모듈을 사용하도록 하겠다.
공식문서는 아래에서 볼 수 있다.
https://docs.nestjs.com/techniques/task-scheduling
* * * * * *
| | | | | |
| | | | | day of week
| | | | months
| | | day of month
| | hours
| minutes
seconds (optional)
이런식으로 이루어지기 때문에
* * * * * * every second
45 * * * * * every minute, on the 45th second
0 10 * * * * every hour, at the start of the 10th minute
0 */30 9-17 * * * every 30 minutes between 9am and 5pm
0 30 11 * * 1-5 Monday to Friday at 11:30am
이걸참고해서 @Crone("45 * * * * *") 이렇게 하면 매분 45초에 실행된다.
import { Injectable, Logger } from '@nestjs/common';
import { Cron, CronExpression } from '@nestjs/schedule';
@Injectable()
export class TasksService {
private readonly logger = new Logger(TasksService.name);
@Cron(CronExpression.EVERY_30_SECONDS)
handleCron() {
this.logger.debug('Called every 30 seconds');
}
}
이런식도 된다고한다.
보니까 종류가 많은 것을 확인할 수 있었으며 잘 작동함을 확인할 수 있었다.
728x90
반응형
'개발 > backend' 카테고리의 다른 글
주기적으로 재시작 하는 node.js 프로그램 만들기 (pm2 ecosystem, crone) (1) | 2024.07.05 |
---|---|
mac에서 Jmeter 설치 및 사용해서 api 테스트해보기 (0) | 2024.02.13 |
ethers & websocket 참고 예제 (0) | 2023.11.27 |
Nest.js 기본 구조 공부(기본 구조, Controller, Provider, Moudule) (1) | 2023.11.24 |
Bignumber.js 사용하여 데이터 처리하기 (0) | 2023.08.25 |
Comments