@1hermn

Как организовать кнопку выход в тг боте?

На текущий момент имею:
При загрузке сцен ставлю:
scene.on("message", async (ctx, next) => await utils.keyboard.exitHandler(ctx, next))
scene.on("message", async (ctx, next) => await utils.keyboard.backHandler(ctx, next))


exitHandler:
spoiler

module.exports = async (ctx, next) => {
    if("text" in ctx.message){
        if(ctx.message.text === ctx.i18n.t("exitButton")){
            if(++ctx.session.count % 2 === 0){
                ctx.session.count = 0;
                return next()
            }
            //get state
            if(ctx.session.scenesHistory.length - 2 >= 0){
                let last = ctx.session.scenesHistory[ctx.session.scenesHistory.length - 2]
                ctx.session.scenesHistory = ctx.session.scenesHistory.splice(ctx.session.scenesHistory.length - 2, 1)
                return ctx.scene.enter(last)
            }else {
                return ctx.scene.enter("start")
            }
        }
    }
    return next()
}


backHandler
spoiler
module.exports = async (ctx, next) => {

    if("text" in ctx.message){
        if(ctx.message.text === ctx.i18n.t("backButton")){
            //get state
            if(ctx.session.__scenes.cursor !== 1){
                ctx.wizard.selectStep(ctx.session.__scenes.cursor - 2)
            }else {
                ctx.reply("Не могу перейти на предыдущий этап. Используйте кнопку " + ctx.i18n.t("exitButton"))
            }
            return next()
        }
    }
    return next()
}


Проблема такая: иногда, бот начинает без конца делать "выход" и ложиться с ошибкой

Promise timed out after 90000 milliseconds

Пытался остановить бесконтрольные выполнения, но не удачно.
Вопрос - с чем такое может быть связано и как это решить?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы