Вставляю пример из документации (он реально работает)
const Telegraf = require('telegraf')
const session = require('telegraf/session')
const Stage = require('telegraf/stage')
const Scene = require('telegraf/scenes/base')
const bot = new Telegraf("ТОКЕН", { handlerTimeout: 100 });
// Handler factoriess
const { enter, leave } = Stage
// Greeter scene
const greeterScene = new Scene('greeter')
greeterScene.enter((ctx) => ctx.reply('Hi'))
greeterScene.leave((ctx) => ctx.reply('Bye'))
greeterScene.hears('hi', enter('greeter'))
greeterScene.on('message', (ctx) => ctx.replyWithMarkdown('Send `hi`'))
// Echo scene
const echoScene = new Scene('echo')
echoScene.enter((ctx) => ctx.reply('echo scene'))
echoScene.leave((ctx) => ctx.reply('exiting echo scene'))
echoScene.command('back', leave())
echoScene.on('text', (ctx) => ctx.reply(ctx.message.text))
echoScene.on('message', (ctx) => ctx.reply('Only text messages please'))
const stage = new Stage([greeterScene, echoScene], { ttl: 10 })
bot.use(session())
bot.use(stage.middleware())
bot.command('greeter', (ctx) => ctx.scene.enter('greeter'))
bot.command('echo', (ctx) => ctx.scene.enter('echo'))
bot.on('message', (ctx) => ctx.reply('Try /echo or /greeter'))
bot.launch()
Моя попытка повторить что-то подобное -- не работает.
const Telegraf = require('telegraf')
const session = require('telegraf/session')
const Stage = require('telegraf/stage')
const Scene = require('telegraf/scenes/base')
const bot = new Telegraf("ТОКЕН", { handlerTimeout: 100 });
const { enter, leave } = Stage
const NameScene = new Scene("namespace");
NameScene.enter((ctx) => {
ctx.reply("Send your name, user");
namespace.on('text', async(ctx) =>{
let HeName = ctx.message.text
})
if (HeName.lenght() < 2) {
ctx.reply("Setup your real name")
}
})
bot.command('start', (ctx) => ctx.scene.enter('namespace'))
const stage = new Stage([NameScene], { ttl: 10 })
bot.use(session())
bot.use(stage.middleware())
bot.launch()
Выдаёт ошибку:
TypeError: Cannot read property 'enter' of undefined.
scenes.js:21:41