Реализовать новую историю "Прикладной программист -- Запустить бота из своего кода"
Алексей Милов: Господа ботоводы - подскажите такой момент - как то извне (с браузера) я могу на определенный статус бота перейти?
Алексей Милов: ситуация - сделал ссылку на оплату, перешли по ней. Оплата прошла - могу перейти назад в бота - там я уже буду анализировать состояние оплаты. Так вот - можно на определенный статус сразу перейти?
Евгений Евсеев: @Алексей Милов В таком случае нужно вручную запустить стейт-машину. Звучит сложно, но делается очень просто.
Тебе нужен метод
StateMachine.switch_to
Как инициализировать стейт-машину посмотри в коде
process_tg_update
Это штатный способ. Он же будет использоваться в новом механизме рассылок.
Алексей Милов: То есть я могу извне сделать ссылку какую то, которая будет запускать определенный стейт?
Евгений Евсеев: Да. Только не запускать стейт, а "переводить в нужный стейт"
Общая логика такая:
- Восстановить/инициализировать стейт-машину из БД
- Настроить контексты
- Вызвать StateMachine.switch_to
- Сохранить стейт-машину обратно в БД
Для восстановления стейт-машины из БД, настройки контекстов и дампа стейта обратно можно сделать реиспользуемый контекстный менеджер, чтобы использовать его и во вьюхе вебхука Tg и в прикладном коде.