const Scene = require('telegraf').BaseScene; const Telegraf = require('telegraf'); const Database = require('../Database'); let scene = new Scene('start'); scene.enter(async (ctx) => { ctx.session.state = "first_name"; ctx.session.message_id = ctx.callbackQuery.message.message_id; ctx.session.chat_id = ctx.callbackQuery.message.chat.id; await ctx.editMessageText("Введи своё имя", Telegraf.Extra.markup((m) => m.inlineKeyboard([{text: "Отмена", callback_data: "leave"}]))); await ctx.answerCbQuery(); }); scene.on('text', async (ctx) => { switch (ctx.session.state) { case "first_name": { ctx.session.first_name = ctx.message.text; ctx.session.state = "last_name"; await ctx.telegram.editMessageText(ctx.session.chat_id,ctx.session.message_id, null,"Введи свою фамилию", Telegraf.Extra.markup((m) => m.inlineKeyboard([{text: "Отмена", callback_data: "leave"}]))); break; } case "last_name": { ctx.session.last_name = ctx.message.text; ctx.session.state = "group"; await ctx.telegram.editMessageText(ctx.session.chat_id,ctx.session.message_id,null,"Введи свою группу", Telegraf.Extra.markup((m) => m.inlineKeyboard([{text: "Отмена", callback_data: "leave"}]))); break; } case "group": { ctx.session.group = ctx.message.text; ctx.session.state = "problems"; await ctx.telegram.editMessageText(ctx.session.chat_id,ctx.session.message_id,null,"Введи то что тебе нельзя дарить (алергии, запреты родителей и т.д.)", Telegraf.Extra.markup((m) => m.inlineKeyboard([{text: "Отмена", callback_data: "leave"}]))); break; } case "problems": { ctx.session.problems = ctx.message.text; Database.instance.enterGame(ctx.from.id, ctx.session.first_name, ctx.session.last_name, ctx.session.group, ctx.session.problems); await ctx.telegram.editMessageText(ctx.session.chat_id,ctx.session.message_id,null,"Готово!", Telegraf.Extra.markup((m) => m.inlineKeyboard([{text: "Меню", callback_data: "menu"}]))); await ctx.scene.leave(); } } await ctx.deleteMessage(); }); scene.action('leave', async (ctx) => { await ctx.telegram.editMessageText(ctx.session.chat_id,ctx.session.message_id,null,"Отменено", Telegraf.Extra.markup((m) => m.inlineKeyboard([{text: "Меню", callback_data: "menu"}]))); await ctx.scene.leave(); }); module.exports = scene;