From 50a90b2e93d46c4e026831df0f757d7fba0f32a8 Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 22 Jan 2026 15:42:32 +0800 Subject: [PATCH] Add return buttons to amount and category modification flows --- bot/main.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/bot/main.py b/bot/main.py index b92ad67..1fec903 100644 --- a/bot/main.py +++ b/bot/main.py @@ -188,7 +188,11 @@ async def cb_save_new(callback: types.CallbackQuery, state: FSMContext): @dp.callback_query(F.data == "edit_new_amt", RecordState.waiting_confirm) async def cb_edit_amt_before_save(callback: types.CallbackQuery, state: FSMContext): - await callback.message.answer("✍️ 请输入新金额(数字):") + # 构建带返回按钮的键盘 + builder = InlineKeyboardBuilder() + builder.button(text="🔙 返回", callback_data="return_to_confirm") + + await callback.message.answer("✍️ 请输入新金额(数字):", reply_markup=builder.as_markup()) await state.set_state(RecordState.editing_new_amt) @dp.message(RecordState.editing_new_amt) @@ -206,6 +210,8 @@ async def cb_choose_cat_before_save(callback: types.CallbackQuery): for cat in DEFAULT_CATEGORIES: builder.button(text=cat, callback_data=f"set_new_cat_{cat}") builder.adjust(3) + # 添加返回按钮 + builder.row(types.InlineKeyboardButton(text="🔙 返回", callback_data="return_to_confirm")) await callback.message.edit_text("📂 请选择新类别:", reply_markup=builder.as_markup()) @dp.callback_query(F.data.startswith("set_new_cat_"), RecordState.waiting_confirm) @@ -215,6 +221,21 @@ async def cb_set_cat_before_save(callback: types.CallbackQuery, state: FSMContex data = await state.get_data() await callback.message.edit_text(render_confirm_text(data), reply_markup=get_confirm_kb(), parse_mode="Markdown") +# 处理从修改类别界面返回确认界面的回调 +@dp.callback_query(F.data == "return_to_confirm", RecordState.waiting_confirm) +async def cb_return_to_confirm_from_cat(callback: types.CallbackQuery, state: FSMContext): + """从修改类别界面返回到确认界面""" + data = await state.get_data() + await callback.message.edit_text(render_confirm_text(data), reply_markup=get_confirm_kb(), parse_mode="Markdown") + +# 处理从修改金额输入状态返回确认界面的回调 +@dp.callback_query(F.data == "return_to_confirm", RecordState.editing_new_amt) +async def cb_return_to_confirm_from_amt(callback: types.CallbackQuery, state: FSMContext): + """从修改金额输入状态返回到确认界面""" + data = await state.get_data() + await state.set_state(RecordState.waiting_confirm) + await callback.message.answer(render_confirm_text(data), reply_markup=get_confirm_kb(), parse_mode="Markdown") + # ================= 4. 账单列表展示 ================= async def show_record_list(message_or_call, user_id, page=0):