Как выполнять одну функцию после другой? Python, aiogram
У меня есть бот-тест, который должен последовательно присылать человеку вопросы с кнопками и писать правильно / неправильно Как кидать вопросы не все сразу, а по одному, чтобы вопрос приходил когда пользователь ответил на пред вопрос Пытался сделать так, не присылает след функцию
@dp.message_handler(regexp='Начать тест',content_types="text")
async def a(message:types.Message):
await message.answer("Что обозначает тег a?",reply_markup=taga_kb)
@dp.callback_query_handler(lambda c: c.data == 'right_answera')
async def raona(message:types.Message):
global count
await bot.send_message(chat_id=message.from_user.id,text="Правильный ответ!")
count+=1
@dp.callback_query_handler(lambda c: c.data == 'notright_answera')
async def nrona(message:types.Message):
global count
await bot.send_message(chat_id=message.from_user.id,text="Неправильный ответ.")
async def nextquestion(message: types.Message):
await message.answer("Что обозначает тег div?", reply_markup=tagdiv_kb)
@dp.callback_query_handler(lambda c: c.data == 'right_answerdiv')
async def raondiv(message: types.Message):
global count
await bot.send_message(chat_id=message.from_user.id, text="Правильный ответ!")
count += 1
@dp.callback_query_handler(lambda c: c.data == 'notright_answerdiv')
async def nrondiv(message: types.Message):
await bot.send_message(chat_id=message.from_user.id, text="Неправильный ответ.")```
Ответы (1 шт):
Автор решения: karabok
→ Ссылка
Посмотри на этот ответ, там используется машина состояний в aiogram, поэкспериментируй с кодом
Как взять следующее сообщение пользователя aiogram
Вот урок, который мне помог разобраться с этим в свое время. https://surik00.gitbooks.io/aiogram-lessons/content/chapter3.html
class Form(StateGroup):
name = State()
age = State()
@dp.message_handler(state='*', commands=['setstate'])
async def process_setstate_command(message: types.Message):
Form.name.set()
await message.answer('Введите имя')
@dp.message_handler(state=Form.name)
async def process_setstate_name(message: types.Message):
async with state.proxy() as data:
data['name'] = message.text
Form.next()
await message.answer('Введите возраст')
@dp.message_handler(state=Form.age)
async def process_setstate_age(message: types.Message):
async with state.proxy() as data:
data['age'] = message.text
await message.answer(f'Вас зовут {data['name']}, вам {data['age']} лет.')
state.finish()
Вот небольшой пример, который вы можете переделать под себя.