Не понятно, на какой библиотеке вы это делаете. Вот вам пример на aiogram 2.25. Думаю, в остальных будет примерно так же, кроме добавленных слов async/await. Сделал по вашему шаблону, но лучше хэндлер с callback разделить на несколько, если их планируется много. Рекомендую ознакомиться, чем отличается types.Message от types.CallbackQuery, а также message_handler от callback_query_handler, чтобы в будущем не было проблем.
from aiogram import Bot, Dispatcher, executor, types
bot = Bot('token')
dp = Dispatcher(bot)
@dp.message_handler(commands=['start'])
async def get_phone(message: types.Message):
keyboard = types.InlineKeyboardMarkup()
key_1 = types.InlineKeyboardButton(text='button 1', callback_data='b1')
keyboard.add(key_1)
key_2 = types.InlineKeyboardButton(text='button 2', callback_data='b2')
keyboard.add(key_2)
await bot.send_message(message.from_user.id, text='Выберите, нажав одну из кнопок:', reply_markup=keyboard)
@dp.callback_query_handler(lambda call: True)
async def get_storage(callback: types.CallbackQuery):
if callback.data == 'b1':
await callback.message.answer('Вы нажали на button 1')
if callback.data == 'b2':
await callback.message.answer('Вы нажали на button 2')
# Заглушка, чтобы кнопка не мигала после нажатия
await callback.answer()
executor.start_polling(dp)