nestjs-telegraf/sample/echo/echo.update.ts

44 lines
1.1 KiB
TypeScript
Raw Normal View History

2021-01-02 16:37:59 +03:00
import { Telegraf } from 'telegraf';
2021-01-03 14:26:32 +03:00
import { Command, Help, InjectBot, On, Start, Update } from '../../lib';
2020-12-26 16:48:04 +03:00
import { EchoService } from './echo.service';
2021-01-03 14:26:32 +03:00
import { HELLO_SCENE_ID } from '../app.constants';
import { Context } from '../interfaces/context.interface';
2020-12-26 16:23:54 +03:00
@Update()
2021-01-03 14:26:32 +03:00
export class EchoUpdate {
2020-12-26 16:48:04 +03:00
constructor(
@InjectBot()
2021-01-03 14:26:32 +03:00
private readonly bot: Telegraf<Context>,
2020-12-26 16:48:04 +03:00
private readonly echoService: EchoService,
) {}
@Start()
async onStart(ctx: Context): Promise<void> {
2021-01-03 14:26:32 +03:00
const me = await this.bot.telegram.getMe();
2020-12-26 16:48:04 +03:00
await ctx.reply(`Hey, I'm ${me.first_name}`);
}
@Help()
async onHelp(ctx: Context): Promise<void> {
await ctx.reply('Send me any text');
}
@Command('scene')
async onSceneCommand(ctx: Context): Promise<void> {
await ctx.scene.enter(HELLO_SCENE_ID);
}
2020-12-26 16:23:54 +03:00
@On('message')
2020-12-26 16:48:04 +03:00
async onMessage(ctx: Context): Promise<void> {
2020-12-26 16:23:54 +03:00
console.log('New message received');
2020-12-26 16:48:04 +03:00
if ('text' in ctx.message) {
const messageText = ctx.message.text;
const echoText = this.echoService.echo(messageText);
await ctx.reply(echoText);
} else {
await ctx.reply('Only text messages');
}
2020-12-26 16:23:54 +03:00
}
}