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!