@VladRF4R4R

Как вытащить определенный текст из инлайн кнопки и передать его в state proxy?

Как вытащить определенный текст из инлайн кнопки и передать его в state proxy бо зараз там текст який бот пише, а не то что в инлайн кнопке.
#@dp.message_handler(lambda message: message.text == "Записатися на прийом ", state=None)
async def specialist(message: types.Message):
    await FSMClient.specialist.set()
    read = await bot_db.sql_read2()
    for ret in read:
        await message.answer('Виберіть спеціаліста:', reply_markup=InlineKeyboardMarkup().add(InlineKeyboardButton(f'{ret[0]}', callback_data='spel')))

@dp.callback_query_handler(lambda c: c.data == 'spel', state=FSMClient.specialist)
async def handle_a(callback_query: types.CallbackQuery, state: FSMContext):
    await FSMClient.next()
    async with state.proxy() as data:
        data["specialist"] = callback_query.message.text
    await callback_query.message.answer('Виберіть послугу:', reply_markup=keyboard_inline_buttons)



@dp.callback_query_handler(lambda c: c.data == 'calendar', state=FSMClient.service)
async def callback_run(callback_query: types.CallbackQuery, state: FSMContext):
    await FSMClient.next()
    async with state.proxy() as data:
        data["service"] = callback_query.message.text
    await callback_query.message.answer("Виберіть будь-ласка,зручну для вас дату",reply_markup=await SimpleCalendar().start_calendar())



@dp.callback_query_handler(simple_cal_callback.filter(), state=FSMClient.data)
async def process_simple_calendar(callback_query: CallbackQuery, callback_data: dict, state: FSMContext):
    selected, date = await SimpleCalendar().process_selection(callback_query, callback_data)
    if selected:
        await FSMClient.next()
        async with state.proxy() as data:
            data["data"] = callback_query.message.text
    await callback_query.message.answer(f'Ви вибрали {date.strftime("%d/%m/%Y")}', reply_markup=time)


@dp.callback_query_handler(lambda c: c.data == 'time', state=FSMClient.time)
async def callback_run(callback_query: types.CallbackQuery, state: FSMContext):
    async with state.proxy() as data:
        data["time"] = callback_query.message.text
    await FSMClient.next()
    await callback_query.message.answer("Напишіть юридичні питання")


FSMContextProxy state = 'FSMClient:email', data = {'specialist': 'Виберіть спеціаліста:', 'service': 'Виберіть послугу:', 'data': 'Виберіть будь-ласка,зручну для вас дату', 'time': 'Ви вибрали 29/12/2021', 'description': 'R', 'phone': '+3', 'email': 'A'}
Вот зараз fsm зберігає так,а я щоб замість виберіть спеціаліста,виберіть послугу, Виберіть будь-ласка,зручну для вас дату, Ви вибрали 29/12/2021 було те що пользователь вибрав з инлайн кнопки.
  • Вопрос задан
  • 439 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Kadabrov
data["specialist"] = callback_query.message.text

вы записываете текст сообщения, а надо записывать callback_data кнопки

callback_data = callback_query.data
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект