import { REGISTER_NAME_PROMPT_SCENE, REGISTER_PHOTO_SCENE, REGISTER_SCENE_ID } from "./scenes.const"; import { Command, Ctx, Hears, Scene, SceneEnter, SceneLeave, } from 'nestjs-telegraf'; import { Context } from '../context.interface'; import { Markup } from 'telegraf'; import { Messages } from '../tg.text'; import AppConsts from "../../constants"; import {Inject} from "@nestjs/common"; import {ClientProxy} from "@nestjs/microservices"; @Scene(REGISTER_SCENE_ID) export class RegisterScene { constructor(@Inject(AppConsts.GameServiceName) private gameService: ClientProxy) {} @SceneEnter() onSceneEnter(@Ctx() ctx: Context) { const reply = `Шалом-шалом ✋\r\n Я могу тебя звать ${ctx.message.from.first_name}? `; ctx.reply( reply, Markup.keyboard([ Markup.button.text(Messages.THATS_ME), Markup.button.text(Messages.NOT_ME), ]), ); } @Hears(Messages.THATS_ME) async onAgree(@Ctx() ctx: Context) { this.gameService.send( { cmd: 'RegisterUser'}, { name: ctx.message.from.first_name, telegramId: ctx.message.from.id, chatId: ctx.chat.id }).subscribe(async (result) => { await ctx.replyWithMarkdownV2('Охуенчик, добро пожаловать\\!', { reply_markup: { remove_keyboard: true, }, }); await ctx.scene.enter(REGISTER_PHOTO_SCENE); }) } @Hears(Messages.NOT_ME) async onDisagree(@Ctx() ctx: Context) { await ctx.replyWithMarkdownV2('Тогда назови себя', { reply_markup: { remove_keyboard: true, }, }); await ctx.scene.enter(REGISTER_NAME_PROMPT_SCENE); } @Command('leave') async onLeaveCommand(ctx: Context): Promise { await ctx.scene.leave(); } }