tgd-telegram-service/src/bot/scenes/register.scene.ts
2024-10-29 22:42:21 +04:00

65 lines
1.8 KiB
TypeScript

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<void> {
await ctx.scene.leave();
}
}