Задать вопрос
@newPsevdonim
Python разработчик

Почему бот не переходит в другую функцию после нажатия на inline_button?

почему после нажатия на кнопку которая появляется после запуска функции get_time_callback бот не переходит в функцию get_monitoring_block_callback? Как это можно исправить?

async def get_time_callback(message: Message):
    await message.answer(
        '123',
        reply_markup=time_keyboard
    )
    logging.info("я тут")
    await MonitoringState.waiting_for_monitoring_group.set()


async def get_monitoring_block_callback(query: CallbackQuery, state: FSMContext):
    # async with state.proxy() as data:
    #     data["period"] = query.data
    logging.info("пришел сюда")
    time_period = query.data
    await state.update_data(category=time_period)
    await query.message.answer(
        '123',
        reply_markup=monitoring_keyboard
    )
    await MonitoringState.waiting_for_finish.set()


async def get_monitoring_finish_callback(query: CallbackQuery, state: FSMContext):
    monitoring_block = query.data
    data = await state.get_data()
    await query.message.answer(
        f"{data}"
    )
    await state.finish()


def register_handlers(dp):
    dp.register_message_handler(get_time_callback, commands=['start'])
    dp.register_message_handler(get_monitoring_block_callback,
                                state=MonitoringState.waiting_for_monitoring_group)
    dp.register_callback_query_handler(get_monitoring_finish_callback,
                                       state=MonitoringState.waiting_for_finish)
  • Вопрос задан
  • 60 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@nickie000
У тебя для callback кнопки должен быть прописан параметр callback_data, потом в диспетчере своей функции нужно прописать параметр с callback_data той самой кнопки по которой он активируется
Пример:
# Кнопка
button_name = InlineKeyboardButton('ABC', callback_data='ABC')

# Диспетчер
async def register_handlers(dp: Dispatcher):
    dp.register_callback_query_handler(def_name, lambda c: c.data == 'ABC')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы