This repository has been archived on 2024-05-15. You can view files and clone it, but cannot push or open issues or pull requests.
ks54santa/scenes/start.js
2022-12-16 00:42:34 +03:00

55 lines
2.7 KiB
JavaScript

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;