Учусь делать ботов в телеграм`e с помощью библиотеки aiogram, нужна помощь более опытного разработчика в разборе правильного построения обработчика колбэков(callback_query_handler).
Есть сформулированный хэндлер(обработчик сообщений) который отвечает на команду 'random' сообщением "Нажмите на кнопку, чтобы бот отправил число от 1 до 10" и инлайн-кнопкой 'Нажми меня', которая после нажатия отправляет пользователю случайное число от 1 до 10.
Сам хэндлер:
@dp.message_handler(commands="random")
async def cmd_random(message: types.Message):
keyboard = types.InlineKeyboardMarkup()
keyboard.add(types.InlineKeyboardButton(text="Нажми меня", callback_data="random_value"))
await message.answer("Нажмите на кнопку, чтобы бот отправил число от 1 до 10", reply_markup=keyboard)
Но формулировка обработчика колбэков для него не однозначна для меня, потому что я написал два обработчика(с серьезными, в моем понимании, различиями), которые отправляют эквивалентные(визуально) ответы:
1.
@dp.callback_query_handler(text="random_value")
async def send_random_value(call: types.CallbackQuery):
await call.message.answer(str(randint(1, 10)))
2.
@dp.callback_query_handler(lambda c: c.data == "random_value")
async def send_random_value(message: types.Message):
await bot.send_message(message.from_user.id,(str(randint(1, 10))))
Я буду очень благодарен, если вы мне поможете глубоко разобраться в правильном построении обработчика колбэков, да и в общем в этой библиотеке. Заранее благодарю вас за потраченное на этот вопрос время.
P.s. я недавно начал изучать программирование в целом, поэтому попрошу быть снисходительнее и отнестись с пониманием.