在中间件aiogram v3中使用FSM的state.data

问题描述 投票:0回答:1

在中间件aiogram v3中使用FSM的state.data

如何在中间件中使用和处理用户状态? 主要问题是检查用户身份验证状态。 实际 MRE

@menu.message(MenuFSM.menu)    
async def show_menu(message: Message, state: FSMContext):
    data = await state.get_data()
    if not data.get("isPasswordSetup") or not data.get("isPasswordConfirmed"):
        return 0
 
    builder = ReplyKeyboardBuilder()
    builder.row(KeyboardButton(text="Меню"))
    await message.answer("HI", reply_markup=builder.as_markup(resize_keyboard=True, one_time_keyboard=True))

我希望将这部分隐藏到中间件(DRY :)) 顺便说一句,这可能吗?

data = await state.get_data()
    if not data.get("isPasswordSetup") or not data.get("isPasswordConfirmed"):
        return 0
python-3.x aiogram
1个回答
0
投票
async def __call__(self, handler, update: Update, data):
    state = data['state']
    data = await state.get_data()
    if not data.get("isPasswordSetup") or not data.get("isPasswordConfirmed"):
        return 0

    builder = ReplyKeyboardBuilder()
    builder.row(KeyboardButton(text="Меню"))
    await update.event.answer("HI", reply_markup=builder.as_markup(resize_keyboard=True, one_time_keyboard=True))
    
© www.soinside.com 2019 - 2024. All rights reserved.