const db = client.db();
session = new TelegrafMongoSession(db, {
collectionName: 'sessions',
sessionName: 'session'
});
bot.startPolling();
});
Вот этот кусок кода ты из доки заиспользовал?
Ну точнее у тебя там вообще коннект к самой db есть и его ожидание?
вывел console.log(session) - всё нормально, он есть, к базе подключён
ну дичь какая то. Если middleware есть, то заходить в него должно 🤷♂️🤷♂️
я нашёл проблему! только не понимаю, как поправить 1. подключение bot.use((...args) => session.middleware(...args)); 2. сцена settings.enter(async (ctx) => { logger.debug(ctx, 'Enters settings scene'); await sendMessageToBeDeletedLater(ctx, 'message'), getSettingsMainKeyboard(ctx)); }); 3. в telegraf-session-mongodb async middleware(ctx, next) { ... await next(); await this.saveSession(key, ctx[this.options.sessionName] || {}); } Код сцены пролетает не выполняясь, т.к. async. И next() оказывается выполненым и записывает session в базу. Но в сцене ещё не успели изменить session. Как нужно написать код сцены settings.enter, чтобы ждало, пока он выполнится?
А у тебя сцена не форкнута случаем?
не знаю, что это
Обсуждают сегодня