Как выводить текст при нажатии на InlineKeyboardButton?

Создал InlineKeyboardButton, сделал callback, но не знаю как обработать, чтобы при нажатии на кнопку выводился текст.

main = InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text='Профиль', callback_data='Profile')],
])

Вот создал кнопку.

Дальше я обработал:

@router.callback_query(F.data == 'Profile')
async  def profiles(callback: CallbackQuery):
    await callback.answer()
    await callback.message.edit_text("Профиль:", reply_markup=kb.Profiles)

Как при нажатии вывести текст?


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

Автор решения: Alex
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.utils.keyboard import InlineKeyboardBuilder
from aiogram.fsm.context import FSMContext
from aiogram import Router

bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher()
router = Router()

main = InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text='Профиль', callback_data='Profile')],
])

kb_Profiles = InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text='Назад', callback_data='back')],
])

@router.callback_query(lambda c: c.data == 'Profile')
async def profiles(callback: types.CallbackQuery):
    await callback.message.edit_text("Профиль:", reply_markup=kb_Profiles)
    await callback.answer()  # Отвечаем на callback, чтобы убрать "часики"

@router.callback_query(lambda c: c.data == 'back')
async def go_back(callback: types.CallbackQuery):
    await callback.message.edit_text("Главное меню", reply_markup=main)
    await callback.answer()

@router.message(Command("start"))
async def start(message: types.Message):
    await message.answer("Добро пожаловать! Выберите действие:", reply_markup=main)

dp.include_router(router)

if __name__ == "__main__":
    import asyncio
    from aiogram.types import BotCommand

    async def main():
        await dp.start_polling(bot)

    asyncio.run(main())
→ Ссылка