Автоматическое определение имени переменной, python aiogram
пишу бота с использованием aiogram пытаюсь в одной функции реализовать диалог с пользователем мне нужно задать несколько разных вопросов пользователю и сохранить результат считаю будет неправильно создавать отдельную функцию для каждого вопроса
не пойму как автоматически подставить нужную переменную для сохранения данных
или может есть более простое решение моей задачи?
class DataTask(StatesGroup):
create_task = State()
async def cmd_task(message: types.Message, state: FSMContext):
await DataTask.create_task.set()
await state.update_data(counter = 0)
await state.update_data(items = [['Введите название задачи','title'],
['Введите описание','description'],
['Укажите дату окончания','date_over']])
#await state.update_data(title = '')
#await state.update_data(description = '')
#await state.update_data(date_over = '')
async def task_work(messasge: types.Message, state: FSMContext):
data = await state.get_data()
await messasge.reply(f"{data['items'][data['counter']][0]}")
await state.update_data(counter = data['counter']+1)
#await state.update_data(exec(%s = %s % (data['items'][data['counter'][1]], message.text)))
if data['counter']+1 == (len(data['items'])):
await state.update_data(counter = 0)
await state.reset_state(with_data=False)
async def mtest(message: types.Message, state: FSMContext):
data = await state.get_data()
await message.reply(f"{data['title']}\n"
f"{data['description']}\n"
f"{data['counter']}"
f"{data['date_over']}")
def register_handlers_todo(dp: Dispatcher):
dp.register_message_handler(cmd_task, commands="newtask", state='*')
dp.register_message_handler(mtest, commands='test',state='*')
dp.register_message_handler(task_work,
content_types=types.ContentTypes.TEXT,
state=DataTask.create_task)