Вызов функция по порядку не происходит, потому что параметр context_type = ['text']. Aiogram Python
Всем привет! Картина выглядит примерно так : Я делаю телеграм-бота , у которого есть функционал для пользователя (некого рабочего), который в конце смены делает отчет о проделанной им работе. Чтобы записать данные о проделанной работе , в телеграм боте есть "Меню" , из которого он выбирает по некому "дереву" данные для заполнения лога . Дерево выглядит примерно так [Изделие -> детали->тех. процесс с деталью -> количество сделанных деталей], все кнопки генерируются динамически, в зависимости от выбора предыдущего пункта юзера, а данные для генерации берутся из БД. Я столкнулся с проблемой , что функция не переходит на следующий этап , потому что в context_type в 3х декораторах стоит параметр ['text'] , однако я не могу захардкодить эту часть кода. Потому что предполагается , что не известно , какой выбор сделает юзер.
Вопрос : Как сделать так , чтобы после завершения изменения состояния одного параметра , вызывалась следующая функция.
@dp.message_handler(text=["Отчёт о работе"])
async def add_item(message: types.Message):
await WorkReport.product.set()
await message.answer(text="Выбери изделие", reply_markup=kb.product_name_panel)
@dp.callback_query_handler(state=WorkReport.product)
async def add_item_product(call: types.CallbackQuery, state: FSMContext):
async with state.proxy() as data:
data['product'] = call.data
await call.message.answer(text="Выбери деталь", reply_markup=kb.DetailsOfProductButton(product_name=call.data))
await WorkReport.next()
@dp.message_handler(content_types=['text'], state=WorkReport)
async def add_item_detail(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['detail'] = message.text
await message.answer(text="Выбери операцию", reply_markup=kb.PartOperationButton(data['product'], data['detail']))
await WorkReport.next()
@dp.message_handler(content_types=['text'], state=WorkReport)
async def add_item_operation(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['operation'] = message.text
await WorkReport.next()
@dp.message_handler(content_types=['text'], state=WorkReport)
async def add_item_amount(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['amount'] = message.text
await state.finish()