Помогите с aiogram

Новичок
Статус
Оффлайн
Регистрация
4 Ноя 2024
Сообщения
1
Реакции[?]
0
Поинты[?]
0
пишу бота на aiogram 3 версии, не могу реализовать функцию
допустим, у нас есть главное меню с кучей инлайн кнопок, после нажатия на одну из них пользователь должен попадать в "подтему" с ещё несколькикми инлайн кнопками:
главное меню (инлайн кнопки с разными разделами) --- мои книги (снова раздел с несколькими инлайн кнопками)
 
Начинающий
Статус
Оффлайн
Регистрация
16 Авг 2024
Сообщения
33
Реакции[?]
5
Поинты[?]
5K
ну тебе нужен callback_query для реализация твоего функционала с помощью inline баттанов, если просто markup, то можно отслеживать что пользователь написал вместо callback'ов. Возможно понадобится FSMContext использовать для создания состояний пользователя(Машина состояния)

вот примерный код


python:
# Создание машины состояний
class MenuStates(StatesGroup):
    main_menu = State()
    my_books = State()

# Главное меню
@dp.message_handler(commands=['start'])
async def start_menu(message: types.Message, state: FSMContext):
    keyboard = InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="Мои книги", callback_data="my_books")],
        # Добавь другие кнопки, если нужно
    ])
    await message.answer("Главное меню", reply_markup=keyboard)
    await state.set_state(MenuStates.main_menu)

# Обработка инлайн кнопок
@dp.callback_query_handler(lambda c: c.data == "my_books", state=MenuStates.main_menu)
async def show_my_books(callback: CallbackQuery, state: FSMContext):
    keyboard = InlineKeyboardMarkup(inline_keyboard=[
        [InlineKeyboardButton(text="Книга 1", callback_data="book_1")],
        [InlineKeyboardButton(text="Книга 2", callback_data="book_2")],
        [InlineKeyboardButton(text="Назад", callback_data="back_to_menu")],
    ])
    await callback.message.edit_text("Ваши книги:", reply_markup=keyboard)
    await state.set_state(MenuStates.my_books)

# Назад в главное меню
@dp.callback_query_handler(lambda c: c.data == "back_to_menu", state=MenuStates.my_books)
async def back_to_main_menu(callback: CallbackQuery, state: FSMContext):
    await start_menu(callback.message, state)
 
Сверху Снизу