как можно в callback отправить сообщение с reply клавиатурой. Сейчас отправляется только inline клавиатура. Если указать reply клавиатуру, то отправляется просто текст.
Версия aiogram~=2.18
Вот примерный код:
async def clicked_pusk(call: CallbackQuery):
await call.message.answer(text="Вы запустили мониторинг", reply_markup=stop_keyboard())
# хочу, чтобы кнопка "Остановить мониторинг" была всегда на ввиду у пользователя. За этого не рассматриваю inline клавиатуру.
def stop_keyboard():
stop_menu = ReplyKeyboardMarkup(resize_keyboard=True,
keyboard=[
[KeyboardButton(text='Остановить мониторинг')]
]
)
return stop_menu
Но кнопка "Остановить мониторинг" не появляется, просто отправляется текст сообщения.
Может кто решал такую задачу.
Кстати вот ответ от Claude (пробовал так делать, но тоже кнопка не появляется):
В callback функции нельзя непосредственно отправить сообщение с reply клавиатурой (ReplyKeyboardMarkup).
Причина в том, что callback генерируется при нажатии на inline кнопку, поэтому в нем можно управлять только inline клавиатурами.
Чтобы отправить сообщение с reply клавиатурой из callback, нужно:
В callback функции выполнить необходимую логику обработки нажатия кнопки.
Получить chat_id пользователя из объекта callback функции.
Используя chat_id, отправить новое сообщение методом bot.send_message()
При отправке этого сообщения указать параметр reply_markup с нужной reply клавиатурой.
Пример:
@dp.callback_query_handler(...)
async def process_callback(callback: types.CallbackQuery):
# обработка
await bot.send_message(chat_id=callback.from_user.id,
text="text",
reply_markup=reply_keyboard)
То есть сначала обрабатываем callback, а затем уже отдельным запросом отправляем сообщение с reply клавиатурой в нужный чат.
---
Как говорил ранее, также не получается прикрепить кнопку.