Проблема с вызовом функции в телеграм боте с aiogram
Какая-то странная проблема. В финале мне нужно получить значение из Inline кнопок и сохранить его в state и вывести сообщением, но вместо сохранения в state нужного мне значения он сохраняет и выводит show_product.
@dp.callback_query_handler(lambda call: call.data == 'show_product')
async def type_product_show(message: CallbackQuery, state: FSMContext):
key = InlineKeyboardMarkup(row_width=2)
for prod in products:
key.insert(InlineKeyboardButton(text=prod, callback_data=prod))
key.add(InlineKeyboardButton(text='Главное меню', callback_data='main_menu')
text = str('Выбирете пункт или напишите текст')
await bot.send_message(message.from_user.id, text, reply_markup=key)
await state.finish()
await product(message, state)
async def product(message: Union[CallbackQuery, Message], state: FSMContext):
await state.finish()
if isinstance(message, Message):
async with state.proxy() as data:
data['product'] = message.text
if isinstance(message, CallbackQuery):
if message.data == 'main_menu':
await state.finish()
else:
async with state.proxy() as data:
data['product'] = message.data
key = InlineKeyboardMarkup()
key.add(InlineKeyboardButton(text='Главное меню', callback_data='main_menu'))
async with state.proxy() as data:
product = data['product']
text = str(f'Вы выбрали {product}')
await bot.send_message(message.from_user.id, text, reply_markup=key)
Я понимаю, что это скорее всего из-за вызова функции product(message, state). Но я не знаю как решить данный вопрос