Ну вот смотри, совсем на пальцах самый простой тип взаимодействия. Допустим, есть состояние диалога:
неопределённое или 0 - пользователь ничего не писал, но нажал /start - мы отвечаем кнопкой и переводим в состояние 1.
1 - пользователь нажал на кнопку - мы спрашиваем телефон и переводим в состояние 2.
2 - пользователь ввёл телефон - мы делаем что надо и возвращаем в состояние 0.
Так что заводим словарь:
user_states = dict()
Далее по каждому сообщению мы делаем:
try:
user_states[message.from_user.id]
except KeyError:
user_states[message.from_user.id] = 0
if user_states[message.from_user.id] == 0:
bot.send_message (посылаем кнопку)
user_states[message.from_user.id] = 1
elif user_states[message.from_user.id] == 1:
bot.send_message (спрашиваем телефон)
user_states[message.from_user.id] = 2
elif user_states[message.from_user.id] == 2:
bot.send_message (как прикажете, господин)
do_somethine_awesome
user_states[message.from_user.id] = 0
Если непонятно, как это превратить в рабочий код, то тебе явно рано писать ботов, подучи сначала язык.