Есть бот, в котором посредством инлайн-кнопок выбираем аргумент Х из трех вариантов Х1, Х2, Х3).
Далее текстом вводим значение YY (самих значений много, но они одинаковые для всех Х).
На выходе бот присылает нам документ, в зависимости от двух переменных.
Проблема в том, что бот запоминает только первое введенное значение Х, и для всех последующих значений Х присылает результаты для Х, которое было выбрано в самом начале.
Что не так с кодом? Асинхронность?
Код:
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
keyboard = InlineKeyboardMarkup()
keyboard.add(InlineKeyboardButton(text="X1", callback_data="X1"))
keyboard.add(InlineKeyboardButton(text="X2", callback_data="X2"))
keyboard.add(InlineKeyboardButton(text="X3", callback_data="X3"))
await message.answer(f'<b>Привет!</b>', parse_mode='HTML', reply_markup=keyboard)
@dp.callback_query_handler()
async def nationality_choice(callback: types.CallbackQuery):
if callback.data == 'X1':
ms='Принято X1'
await bot.send_message(callback.message.chat.id, ms, parse_mode='html')
@dp.message_handler()
async def reply_message_X1(message: types.Message):
if message.text == 'YY':
doc = open('X1YY.pdf', 'rb')
await bot.send_document(message.chat.id, doc)
elif callback.data == 'X2':
ms = 'Принято Х2'
await bot.send_message(callback.message.chat.id, ms, parse_mode='html')
@dp.message_handler()
async def reply_message_X2(message):
if message.text == 'YY':
doc = open('X2YY.pdf', 'rb')
await bot.send_document(message.chat.id, doc)
elif callback.data == 'X3':
ms = 'Принято Х3'
await bot.send_message(callback.message.chat.id, ms, parse_mode='html')
@dp.message_handler()
async def reply_message_X3(message):
if message.text == 'YY':
doc = open('X3YY.pdf', 'rb')
await bot.send_document(message.chat.id, doc)
executor.start_polling(dp, skip_updates=True)