Чтобы корректно выбрать обработчик событий в зависимости от нажатой кнопки, необходимо иметь механизм идентификации действия, вызванного конкретной кнопкой. В вашем случае возможно использование параметра `callback_data`, который позволяет передать уникальную строку данных при нажатии на кнопку встроенной клавиатуры (InlineKeyboardButton). Так как вы используете `KeyboardButton` из `types.ReplyKeyboardMarkup`, вам нужно исправить логику для работы с данным типом кнопок.
Используйте `callback_data` с InlineKeyboardButton и InlineKeyboardMarkup для реализации этого. Пример кода с `InlineKeyboardMarkup`:
```python
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.dispatcher.filters import Text
@dp.message_handler(Text(equals="Кнопки"))
async def configure_source_channels(message: Message, state: FSMContext):
user_id = message.from_user.id
user_states[user_id] = UserStates.SOURCE_CHANNELS
keyboard = InlineKeyboardMarkup(row_width=1).add(
InlineKeyboardButton(text="Кнопка-1", callback_data="button_1"),
InlineKeyboardButton(text="Кнопка-2", callback_data="button_2")
)
await message.answer(text="Выберите действие:", reply_markup=keyboard)
await state.clear()
@dp.callback_query_handler(Text(equals="button_1"))
async def func1(callback_query: CallbackQuery, state: FSMContext):
chat_info = callback_query.message.chat.id
# обработка нажатия на кнопку 1
@dp.callback_query_handler(Text(equals="button_2"))
async def func2(callback_query: CallbackQuery, state: FSMContext):
chat_info = callback_query.message.chat.id
# обработка нажатия на кнопку 2
```
Обратите внимание, что теперь вместо `reply_markup` с `ReplyKeyboardMarkup` вы используете `InlineKeyboardMarkup`, которая поддерживает `callback_data`. После этого в обработчиках событий вы обращаетесь к `callback_query` для обработки нажатия на встроенные кнопки, а не к объекту сообщения.
При использовании `InlineKeyboardMarkup`, пользователь видит всплывающее уведомление вместо того, чтобы отсылать сообщение в чат. Для `ReplyKeyboardMarkup` вы также можете использовать уникальные тексты для каждой кнопки и соответствующие проверки в хендлерах, если вам необходим именно этот тип кнопок.
Для `ReplyKeyboardMarkup`:
```python
# Настройка кнопок
keyboard = ReplyKeyboardMarkup(keyboard=[
[KeyboardButton(text="Кнопка-1")],
[KeyboardButton(text="Кнопка-2")],
])
# Обрабатываем сообщения с текстом "Кнопка-1"
@dp.message_handler(lambda message: message.text == "Кнопка-1")
async def func1(message: Message, state: FSMContext):
chat_info = message.chat.id
# обработка нажатия на кнопку 1
# Обрабатываем сообщения с текстом "Кнопка-2"
@dp.message_handler(lambda message: message.text == "Кнопка-2")
async def func2(message: Message, state: FSMContext):
chat_info = message.chat.id
# обработка нажатия на кнопку 2
```
Таким образом, для каждой кнопки вы определите обработчик, который будет срабатывать в случае получения сообщения с соответствующим текстом.