Как выводить текст при нажатии на 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())