Как в телеграмм боте сделать кнопку, которая подменяет клавиатуру?
чтобы кнопка появилась, нужно создать такую клавиатуру
Да

Собственно, у метода sendMessage есть поле reply_markup, которое может в себе содержать InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReply
Возьмем ReplyKeyboardMarkup, она создает такую клавиатуру. ReplyKeyboardMarkup состоит из нескольких необязательных полей, описывающих поведение и расположение кнопок и одного обязательного поля keyboard, которое является Array of Array of KeyboardButton
Ну а KeyboardButton уже содержит в себе поле text, определяющее, как ни странно, текст, и другие, которые меняют поведение кнопки.

import requests

CHAT_ID = 123
TOKEN = 123

keyboard = {'keyboard': [[{'text': 'Button 1'}, {'text': 'Button 2', 'request_contact': True}]]}
payload = {'chat_id': CHAT_ID , 'text': 'Hello, world!', 'reply_markup': keyboard}

requests.post(f'https://api.telegram.org/bot{TOKEN}/sendMessage', json=payload)
https://habr.com/ru/post/522720/

Что ж вы все не умеете гуглить-то?!