Step.two, Step.three])
async def back_button(message : types.Message, state: FSMContext):
s = await state.get_state() print(s)
@dp.message_handler(chat_type=ChatType.PRIVATE, state = [Step.one, Step.two, Step.three]) async def back_button(message : types.Message, state: FSMContext, raw_state: str): if raw_state == Step.one: ...
интересное решение, а как так происходит?
raw_state всегда передается в хендлеры отфильтрованные по StateFilter
какие еще есть такие аргументы? пытался с помощью *args, **kwargs словить и не поймал
https://github.com/aiogram/aiogram/blob/dev-2.x/aiogram/dispatcher/filters/builtin.py Вот здесь почитай
их правильно будет сравнивать как str? ибо ответы такие: Step:message_text >>> <State 'Step:message_text'> raw_state >>> Step:message_text
Step.message_text.state == "Step:message_text", если мне не изменяет память
И как строку. И как класс стейт. И как стейтгруппу
https://github.com/aiogram/aiogram/search?q=raw_state&type=code Ну по поиску в репо оно только в одном месте. Список не знаю, но по идее оно в том файле распределяется И скорей всего в dispatcher.py тоже
Есть ещё удобное regexp: Match у фильтра Regexp(), который возвращает первое соответствие регулярному выражению в тексте или подписи медиа
Обсуждают сегодня