Как обрабатывать нажатие Inline кнопок aiogram?

Inline кнопки в aiogram позволяют добавлять интерактивность в бота, чтобы пользователи могли взаимодействовать с ним через кнопки, расположенные непосредственно в тексте сообщений.

Чтобы обработать нажатие на Inline кнопку в aiogram, необходимо использовать декоратор @dp.callback_query_handler. В качестве аргументов декоратору передается текстовый идентификатор (callback_data), который будет отправлен при нажатии кнопки.

Прежде чем начать обрабатывать нажатие кнопок, первым делом необходимо настроить и подключить библиотеку aiogram. Для этого создается новый файл, например, bot.py, и в нем выполняются следующие действия:

from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage

API_TOKEN = 'Ваш_токен_бота'

bot = Bot(token=API_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

Теперь, когда aiogram настроен, можно приступить к созданию обработчика нажатия на кнопку. Добавьте следующий код в bot.py:

@dp.callback_query_handler(lambda c: True)
async def process_callback_button(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    await bot.send_message(callback_query.from_user.id, "Вы нажали на кнопку!")

Этот код обрабатывает все нажатия на Inline кнопки. Чтобы отличить разные кнопки, можно использовать lambda функцию и проверять значение callback_query.data. Например:

@dp.callback_query_handler(lambda c: c.data == "button1")
async def process_callback_button1(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    await bot.send_message(callback_query.from_user.id, "Вы нажали на кнопку 1!")
    
@dp.callback_query_handler(lambda c: c.data == "button2")
async def process_callback_button2(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    await bot.send_message(callback_query.from_user.id, "Вы нажали на кнопку 2!")

В этом примере кода определены две нажатия на кнопки: "button1" и "button2". Каждая кнопка обрабатывается отдельно.

Обработчик сначала вызывает bot.answer_callback_query, чтобы подтвердить нажатие кнопки. Затем отправляется сообщение обратно пользователю, чтобы свидетельствовать о том, что кнопка была нажата и обработана.

Для запуска бота добавьте следующий код в конце bot.py:

if __name__ == '__main__':
    from aiogram import executor
    executor.start_polling(dp)

Теперь, при каждом нажатии на Inline кнопку, бот будет отвечать пользователю соответствующим сообщением, указанным в обработчике.

Надеюсь, эта подробная информация помогла вам понять, как обрабатывать нажатие Inline кнопок в aiogram. Удачи в разработке вашего бота на Python!