Получить значение с Inline клавиатуры telegram
@dp.callback_query_handler(text="question")
async def question(call: types.CallbackQuery):
answer = call.data
if answer == "Да":
await call.message.answer(text="Парсинг займет 1 минуту, ожидайте...", show_alert=True)
else:
await call.message.answer(text="Отменено.", show_alert=True)
@dp.message_handler(commands=['parse_channels'])
async def question(message: types.Message):
await message.answer(f"Вы точно хотите начать парсинг новых каналов?", reply_markup=kb.keyboard)
Файл keyboards.py
from aiogram.types import ReplyKeyboardRemove, \
ReplyKeyboardMarkup, KeyboardButton, \
InlineKeyboardMarkup, InlineKeyboardButton
keyboard = InlineKeyboardMarkup()
keyboard.add(InlineKeyboardButton(text="Да", callback_data="question"))
keyboard.add(InlineKeyboardButton(text="Нет", callback_data="question"))
Вопрос в следующем: как по нажатию инлайн кнопки со значением "Да" отправить соответсвующее сообщение? С чем сравнивать?
Ответы (1 шт):
Автор решения: KLEYZYツ
→ Ссылка
@dp.message_handler(commands=['new_channels'])
async def parse_confirm(message: types.Message):
await message.answer(f"Вы точно хотите начать парсинг новых каналов?", reply_markup=kb.question)
@dp.callback_query_handler(lambda y: y.data == "1")
async def answer_yes(callback_query: types.CallbackQuery):
await bot.answer_callback_query(callback_query.id)
await bot.send_message(callback_query.from_user.id, '✅ Парсинг займет 1-2 минуты, ожидайте...')
@dp.callback_query_handler(lambda n: n.data == "0")
async def answer_no(callback_query: types.CallbackQuery):
await bot.answer_callback_query(callback_query.id)
await bot.send_message(callback_query.from_user.id, '❌ Отменено')
Проблема решена.
Файл keyboards.py
question = InlineKeyboardMarkup()
question.add(InlineKeyboardButton(text="Да", callback_data="1"))
question.add(InlineKeyboardButton(text="Нет", callback_data="0"))