Как вариант, помещать в callback_data информацию об уровне на котором находитесь, а потом парсить это значение.
but1= types.InlineKeyboardButton('Утром', callback_data='daypart|утро')
but2= types.InlineKeyboardButton('Днём', callback_data= 'daypart|день')
Затем уже в либо в хендлере отлавливать нужное
@bot.callback_query_handler(func=lambda call: call.data.split('|')[0]=='daypart')
...либо принимать все подряд и эту проверку делать уже внутри, желательно разбив этот отбработчик на отдельные функции для отдельного уровня меню.
Может быть уже в telebot добавили такой механизм, как конечные автоматы (FSM в aiogram), давно не следил за развитием библиотеки. Если что-то подобное есть, то лучше воспользоваться этим.