каждую кнопку запрашивается ввод текста от пользователя
но при этом, как после этого ввода обратно к этой менюшке вернуться?
неужели единственный способ - это делать два обработчика 1. вход в менюшку 2. реакция на ответ? это же выходит просто копирование кода...
в зависимости от кода, мне достаточно одну строчку написать
@router.callback_query(AdminStates.welcome, F.data == 'settings') async def on_callback(query: types.CallbackQuery, state: FSMContext): await state.set_state(AdminStates.settings) settings = get_settings() # тут настройки получаются из БД buttons = list(map(lambda b: [transform(b)], settings)) keyboard = InlineKeyboardBuilder(buttons).as_markup() await query.message.answer('Ваши настройки', reply_markup=keyboard) await query.answer() @router.callback_query(AdminStates.settings) async def on_setting(query: types.CallbackQuery, state: FSMContext): await state.set_state(AdminStates.setting) await state.update_data(setting=query.data) await query.message.answer('Введите новое значение для настройки') await query.answer() @router.message(AdminStates.setting) async def on_value(message: types.Message, state: FSMContext): # await state.set_state(...) # где-то тут сохранение в бд, пока что не дописал # и вот тут надо сделать тоже самое, что делает on_callback pass
напиши заместо get_current, current_state
Сообщение от Официальный Амбассадор Кринжа в России перемещено на HasteBin Размер: 1178 байт
@writepy так что тут можно сделать?
Обсуждают сегодня