NestJS로 텔레그램 봇용 팩트 생성기 만들기
20099 단어 nestjsfactsgeneratorkaufmanbot
https://www.google.com/search?q=random+fact+generator
나는 두 번째를 선택했다.
새 라이브러리 팩트 생성기 만들기
npm run -- nx g @nrwl/nest:lib facts-generator/server
endy@endy-virtual-machine:~/Projects/current/kaufman-bot$ npm run -- nx g @nrwl/nest:lib facts-generator/server
> [email protected] nx
> nx "g" "@nrwl/nest:lib" "facts-generator/server"
CREATE libs/facts-generator/server/README.md
CREATE libs/facts-generator/server/.babelrc
CREATE libs/facts-generator/server/src/index.ts
CREATE libs/facts-generator/server/tsconfig.json
CREATE libs/facts-generator/server/tsconfig.lib.json
UPDATE tsconfig.base.json
CREATE libs/facts-generator/server/project.json
UPDATE workspace.json
CREATE libs/facts-generator/server/.eslintrc.json
CREATE libs/facts-generator/server/jest.config.js
CREATE libs/facts-generator/server/tsconfig.spec.json
CREATE libs/facts-generator/server/src/lib/facts-generator-server.module.ts
사이트로 이동하여 팩트 텍스트에 대한 선택기를 정의합니다.
개발자 콘솔 패널로 이동하여 선택기를 확인하십시오.
libs/facts-generator/server/src/lib/facts-generator-services/facts-generator.service.ts 파일 생성
import { ScraperService } from '@kaufman-bot/html-scraper/server';
import { Injectable } from '@nestjs/common';
@Injectable()
export class FactsGeneratorService {
constructor(private readonly scraperService: ScraperService) {}
async onMessage(msg) {
let result = await this.scraperService.onMessage(msg);
if (result !== null) {
result = result.replace('\n\nTweet [http://twitter.com/share]', '');
}
return result;
}
}
libs/facts-generator/server/src/lib/facts-generator.module.ts 파일 생성
import { ScraperModule } from '@kaufman-bot/html-scraper/server';
import { DynamicModule, Module } from '@nestjs/common';
import { getText } from 'class-validator-multi-lang';
import { FactsGeneratorService } from './facts-generator-services/facts-generator.service';
@Module({})
export class FactsGeneratorModule {
static forRoot(): DynamicModule {
return {
module: FactsGeneratorModule,
imports: [
ScraperModule.forRoot({
contentSelector: '#z',
help: getText('Random facts generator'),
spyWords: [getText('facts')],
removeWords: [getText('get'), getText('please')],
uri: 'http://randomfactgenerator.net/',
}),
],
providers: [FactsGeneratorService],
exports: [ScraperModule, FactsGeneratorService],
};
}
}
필요한 모든 파일 생성 실행
npm run generate
업데이트 파일 apps/server/src/app/app.module.ts
import { CurrencyConverterModule } from '@kaufman-bot/currency-converter/server';
import { FactsGeneratorModule } from '@kaufman-bot/facts-generator/server';
import { Module } from '@nestjs/common';
import env from 'env-var';
import { TelegrafModule } from 'nestjs-telegraf';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
TelegrafModule.forRoot({
token: env.get('TELEGRAM_BOT_TOKEN').required().asString(),
}),
CurrencyConverterModule.forRoot(),
FactsGeneratorModule.forRoot(),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
업데이트 파일 apps/server/src/app/app.service.ts
import { CurrencyConverterService } from '@kaufman-bot/currency-converter/server';
import { FactsGeneratorService } from '@kaufman-bot/facts-generator/server';
import { Injectable, Logger } from '@nestjs/common';
import { Hears, Help, Message, On, Start, Update } from 'nestjs-telegraf';
import { Context } from 'telegraf';
@Update()
@Injectable()
export class AppService {
private readonly logger = new Logger(AppService.name);
constructor(
private readonly currencyConverterService: CurrencyConverterService,
private readonly factsGeneratorService: FactsGeneratorService
) {}
getData(): { message: string } {
return { message: 'Welcome to server!' };
}
@Start()
async startCommand(ctx: Context) {
await ctx.reply('Welcome');
}
@Help()
async helpCommand(ctx: Context) {
await ctx.reply('Send me a sticker');
}
@On('sticker')
async onSticker(ctx: Context) {
await ctx.reply('👍');
}
@Hears('hi')
async hearsHi(ctx: Context) {
await ctx.reply('Hey there');
}
@On('text')
async onMessage(@Message() msg) {
try {
let replayMessage = await this.currencyConverterService.onMessage(msg);
if (replayMessage === null) {
replayMessage = this.factsGeneratorService.onMessage(msg);
}
return replayMessage;
} catch (err) {
this.logger.error(err, err.stack);
}
}
}
전보에서 테스트
Reference
이 문제에 관하여(NestJS로 텔레그램 봇용 팩트 생성기 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/endykaufman/create-facts-generator-for-telegram-bot-with-nestjs-cl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)