Closed AntonRzevskiy closed 6 years ago
@AntonRzevskiy Привет! Для тебя есть несколько недокумментированных возможностей, однако готовых для продакшена.
scene.enter('Я сюда попал', ctx => ...)
scene.leave((ctx) => isTimeToLeave(ctx), ctx => ctx.reply('Вышел со сцены'))
Грубо говоря, просто передай первым аргументом функцию, возвращающую boolean
, если ты вернёшь true
, то тогда совершится выход со сцены.
Вариант N два
const scene2 = new Scene('scene-2')
scene1.any(ctx => {
ctx.enterScene(scene2) // Перейдёт на вторую сцену
ctx.leaveScene() // Выйдет на главный сценарий
}
Спрашивай, если что-то ещё не ясно :) Буду рад помочь!
P.S Для обычный команд тоже можно писать матчеры (функции первым аргументом), чтобы делать нетривиальную логику захода, связанную с ctx.state
или чем-нибудь ещё
Спасибо @fletcherist. Идея использовать свою функцию для "матча", мне очень нравится! Пока справился метод ctx.leaveScene()
. Буду следить за вашим растущим проектом, надеюсь он будет идти в ногу с Алисой :)
@AntonRzevskiy мы готовим большой релиз 2.0. Он сломает обратную совместимость в некоторых местах, но будет намного круче сделан архитектурно. Подробнее..
Здравствуйте! Я немного запутался в сценах. Хочу сразу предупредить я с "nodejs" на вы, а с "typeScript" на "что это О_о".
Постараюсь вкратце объяснить, что мне нужно:
Я хочу создать сцену, но "матчи" для успешного выхода определить программно или в "any" парсить и выходить? как то можно так?