65 lines
1.8 KiB
TypeScript
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();
|
|
}
|
|
}
|