在中间件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
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))