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

Как можно реализовать проверку нажатия на inline кнопку из списка и вывод названия этой кнопки?
  • 1 января 2024 г. 8:37
Ответы на вопрос 2
В библиотеке aiogram для проверки нажатия кнопки можно использовать хэндлеры (`Handler`). Хэндлеры предназначены для обработки различных событий, в том числе для обработки нажатия на кнопку.

Пример проверки нажатия на обычную кнопку:

```python
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor

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

@dp.message_handler(func=lambda message: True)
async def handle_button_click(message: types.Message):
    if message.text == "Нажать кнопку":
        await message.reply("Кнопка была нажата!")
        
executor.start_polling(dp)
```

В данном примере мы задаем хэндлер `handle_button_click` для обработки всех входящих сообщений. Внутри хэндлера мы проверяем, является ли текст сообщения "Нажать кнопку". Если это условие выполняется, то отправляем ответное сообщение "Кнопка была нажата!".

Пример проверки нажатия на inline кнопку из списка и вывод названия этой кнопки:

```python
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor

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

@dp.callback_query_handler(lambda callback_query: True)
async def handle_inline_button_click(callback_query: types.CallbackQuery):
    button_name = callback_query.data
    await callback_query.answer(f'Нажата кнопка "{button_name}"')

executor.start_polling(dp)
```

В данном примере мы задаем хэндлер `handle_inline_button_click` для обработки нажатий на inline кнопки. Внутри хэндлера мы получаем название кнопки из `callback_query.data` и отправляем ответное сообщение с информацией о нажатой кнопке.
Как вариант, в callback_data вставлять что-то типа 
fruit_banana fruit_apple, и потом отлавливать нажатия кнопок с префиксом fruit.

Также не советую данные в callback_data указывать в кириллице. Сделайте словарь с названием кнопки и ее callback_data, где ключ - то, что в callback_data будете заносить, а значение - надпись на кнопке.
Похожие вопросы