Aiogram Получение значения из KeyBoard

Как мне осуществить переход по функциям через меню? Например, если я нажал 'Посмотреть доступные каналы' выполнилась функция channels(). И как в данном случае реализовать FSM вместе с InlineButtons?

Пример кода:

@dp.message_handler(commands=['start'])

async def start(message: types.Message):
    await message.answer_sticker(f'{config.STICKER_START}')
    await message.reply("? Добро пожаловать в спам бота! Напишите /menu, чтобы войти в меню | made by kapitanov", reply_markup=kb.menu)

async def channels(message: types.Message):
    channels = db.channels()
    await message.answer(f"? [{current_date}] ?\n✅ Состояние каналов на текущий момент:\n{channels}")

# ========================================


''' Удаление канала '''

async def delete_channel(message: types.Message, state=None):
    await bot.send_message(message.from_user.id, "✏️ Введите ID канала, который хотите удалить\n(P.S можно посмотреть в Меню->Каналы")

    await Delete_Channel.Channel_id.set()

@dp.message_handler(state=Delete_Channel.Channel_id)
async def answer_delete_channel_id(message: types.Message, state: FSMContext):
    channel_id = message.text
    await state.update_data(channel_id=channel_id)

    data = await state.get_data()
    channel_id = data.get("channel_id")
    db.delete_channel(channel_id)
    await message.answer("✅ Канал успешно удалён!")

    await state.finish()

# ========================================

@dp.callback_query_handler(lambda timing: timing.data == "timing", state=None)
async def change_time(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    timing = db.view_message_timing()   
    timing = round(int(timing) / 1000)
    await bot.send_message(callback_query.from_user.id, f"? [{current_date}] ?\n\nУстановленное сейчас время: {timing} сек.⏱\n\nВведите интервал в секундах (тайминг между сообщениями)")

    await Change_Time.Message_time.set()

@dp.message_handler(state=Change_Time.Message_time)
async def answer_change_time(message: types.Message, state: FSMContext):
    message_time = message.text
    await state.update_data(message_time=message_time)

    data = await state.get_data()
    message_time = data.get("message_time")
    db.edit_message_time(message_time)
    await message.answer("⏱ Время между сообщениями успешно изменено!")

    await state.finish()

@dp.message_handler(commands=['menu'])
async def menu(message: types.Message):
    if message.text == "?‍? Посмотреть все доступные каналы":
        await channels()

Ответы (1 шт):

Автор решения: rocinante
@dp.message_handler(commands="help")
async def cmd_help(message: types.Message, state: FSMContext):
    await state.reset_state()
    await OrderSupport.start_support.set()
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
    stop_button = types.InlineKeyboardButton(
        text="Завершить общение",
    )

    keyboard.add(stop_button)
    await message.answer("Начат чат со службой тех-поддержки", reply_markup=keyboard)
→ Ссылка