diff --git a/src/handlers/admin_panel.py b/src/handlers/admin_panel.py index f5d1eaa..bd5784a 100644 --- a/src/handlers/admin_panel.py +++ b/src/handlers/admin_panel.py @@ -1810,6 +1810,47 @@ async def start_edit_lottery(callback: CallbackQuery, state: FSMContext): await callback.message.edit_text(text, reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons)) +@admin_router.callback_query(F.data.startswith("admin_edit_field_")) +async def handle_edit_field(callback: CallbackQuery, state: FSMContext): + """Обработка выбора поля для редактирования""" + if not is_admin(callback.from_user.id): + await callback.answer("❌ Недостаточно прав", show_alert=True) + return + + # Парсим callback_data: admin_edit_field_{lottery_id}_{field_name} + parts = callback.data.split("_") + if len(parts) < 5: + await callback.answer("❌ Неверный формат данных", show_alert=True) + return + + lottery_id = int(parts[3]) # admin_edit_field_{lottery_id}_... + field_name = "_".join(parts[4:]) # Всё после lottery_id это имя поля + + await state.update_data(edit_lottery_id=lottery_id, edit_field=field_name) + + # Определяем, что редактируем + if field_name == "title": + text = "📝 Введите новое название розыгрыша:" + await state.set_state(AdminStates.lottery_title) + elif field_name == "description": + text = "📄 Введите новое описание розыгрыша:" + await state.set_state(AdminStates.lottery_description) + elif field_name == "prizes": + text = "🎁 Введите новый список призов (каждый приз с новой строки):" + await state.set_state(AdminStates.lottery_prizes) + else: + await callback.answer("❌ Неизвестное поле", show_alert=True) + return + + await callback.message.edit_text( + text, + reply_markup=InlineKeyboardMarkup(inline_keyboard=[ + [InlineKeyboardButton(text="❌ Отмена", callback_data="admin_lotteries")] + ]) + ) + await callback.answer() + + @admin_router.callback_query(F.data.startswith("admin_edit_")) async def redirect_to_edit_lottery(callback: CallbackQuery, state: FSMContext): """Редирект на редактирование розыгрыша из детального просмотра""" @@ -1867,47 +1908,6 @@ async def choose_edit_field(callback: CallbackQuery, state: FSMContext): await callback.message.edit_text(text, reply_markup=InlineKeyboardMarkup(inline_keyboard=buttons)) -@admin_router.callback_query(F.data.startswith("admin_edit_field_")) -async def handle_edit_field(callback: CallbackQuery, state: FSMContext): - """Обработка выбора поля для редактирования""" - if not is_admin(callback.from_user.id): - await callback.answer("❌ Недостаточно прав", show_alert=True) - return - - # Парсим callback_data: admin_edit_field_{lottery_id}_{field_name} - parts = callback.data.split("_") - if len(parts) < 5: - await callback.answer("❌ Неверный формат данных", show_alert=True) - return - - lottery_id = int(parts[3]) # admin_edit_field_{lottery_id}_... - field_name = "_".join(parts[4:]) # Всё после lottery_id это имя поля - - await state.update_data(edit_lottery_id=lottery_id, edit_field=field_name) - - # Определяем, что редактируем - if field_name == "title": - text = "📝 Введите новое название розыгрыша:" - await state.set_state(AdminStates.lottery_title) - elif field_name == "description": - text = "📄 Введите новое описание розыгрыша:" - await state.set_state(AdminStates.lottery_description) - elif field_name == "prizes": - text = "🎁 Введите новый список призов (каждый приз с новой строки):" - await state.set_state(AdminStates.lottery_prizes) - else: - await callback.answer("❌ Неизвестное поле", show_alert=True) - return - - await callback.message.edit_text( - text, - reply_markup=InlineKeyboardMarkup(inline_keyboard=[ - [InlineKeyboardButton(text="❌ Отмена", callback_data="admin_lotteries")] - ]) - ) - await callback.answer() - - @admin_router.callback_query(F.data.startswith("admin_toggle_active_")) async def toggle_lottery_active(callback: CallbackQuery, state: FSMContext): """Переключить активность розыгрыша"""