'TypeError: Cannot read properties of undefined (reading 'enter') Библиотека Telegraf.js

Good afternoon, I ran into a problem, I can not enter the stage

I understand that this happens in the startPolling method when using a new scene, but the problem has not been identified

My Class TelegramManager:

import {Config} from "../../resources/Config.js";
import Command from "../objects/Command.js";
import UserDirector from "../directors/UserDirector.js";
import ScenesManager from "./ScenesManager.js";

export default class TelegramManager {

    constructor(commandManager) {
        this.commandManager = commandManager
        this.telegramClient = new Telegraf(Config.telegram.token) // Инициализация клиента Telegram
        this.userDirector = new UserDirector(); // Инициализация юзер директора
        this.scenesManager = new ScenesManager()
        this.registerCommands()
        this.registerListeners()
        this.startPolling()
    }

    //регистрация обработчика моманд
    //его цель это принимать все сообщения, которые приходят боту и искать среди них команду
    registerListeners() {
        this.telegramClient.on('text', (context) => {
            this.commandManager.matchCommandByText(context.message.text, context)
        })
    }
    //старт прослушивания ивентов от Telegram
    startPolling() {
        this.telegramClient.use(session()) //Используем сессии
        this.telegramClient.use(new Scenes.Stage(this.scenesManager.getScenesList()).middleware()) //Регистрируем наши сцены
        this.telegramClient.launch() //Запускаем бота
            .then(r => console.log(`Telegram Bot started!`)) //Говорим в консоль о том, что бот запущен

    }

    //в этом медоде просто добавляем всевозможные команды для бота
    registerCommands() {
        this.commandManager.addCommand(new Command(/^\/start/gm, async (context) => {

            //Проверяем, если пользователь уже есть в базе данных то не даём зарегистрироваться сн0ова
            if (this.userDirector.userExists(context.message.from.id)) return context.reply(`Вы уже зарегистрированы!`)

            //Если человек не зарегистрирован, то отправляем его в сцену регистрации
            await context.scene.enter('registrationScene')
        }))
    }
}

ScenesManager Class:


export default class ScenesManager {

    constructor() {
        this.scenes = []
        this.registerScenes()
    }

    registerScene(scene) {
        this.scenes.push(scene)
    }

    registerScenes() {
        this.registerScene(registrationScene)
    }

    getScenesList() {
        return this.scenes
    }
}

Scene itself (registrationScene):

import {Markup, Composer, Scenes} from "telegraf";
import {Config} from "../../../resources/Config.js";

const startStep = new Composer()

startStep.on("text", async (ctx) => {
    try {
        ctx.wizard.state.data = {}
        ctx.wizard.state.data.id = ctx.message.from.id

        await ctx.reply(Config.messages.welcome)
    } catch (e) {
        console.log(e)
    }
})

const registrationScene = new Scenes.WizardScene('registrationScene', startStep)



export default registrationScene

Error:

*TypeError: Cannot read properties of undefined (reading 'enter') at Command.action (file:///home/tofa/work/WebstormProjects/timetable/src/telegram/TelegramManager.js:43:33) at Command.execute (file:///home/tofa/work/WebstormProjects/timetable/src/objects/Command.js:10:14) at CommandManager.matchCommandByText (file:///home/tofa/work/WebstormProjects/timetable/src/telegram/CommandManager.js:16:29) at file:///home/tofa/work/WebstormProjects/timetable/src/telegram/TelegramManager.js:23:33 at /home/tofa/work/WebstormProjects/timetable/node_modules/telegraf/lib/composer.js:163:111 at processTicksAndRejections (node:internal/process/task_queues:96:5) at async execute (/home/tofa/work/WebstormProjects/timetable/node_modules/telegraf/lib/composer.js:468:17) at async /home/tofa/work/WebstormProjects/timetable/node_modules/telegraf/lib/composer.js:469:21 at async execute (/home/tofa/work/WebstormProjects/timetable/node_modules/telegraf/lib/composer.js:468:17) at async execute (/home/tofa/work/WebstormProjects/timetable/node_modules/telegraf/lib/composer.js:468:17)



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source