Откуда вообще этот код взят? Бред полный
Во первых, маркапы должны отправлятся как reply_markup=markup в bot.send_message.
Во вторых, вижу хендлер только для команды старт, для текстовых сообщений должен быть отдельный хендлер.
В третьих, секундомер нужно кинуть в Thread иначе while в меин потоке застопорит всего бота
Для этого создаем список потоков, где будем хранить тёпл из айди юзера для навигации по списку и екземляр Thread(target=ФункцияСекундомера args=[если для роботы функции нужны аргументы, вписываем их сюда]).
И потом при обращении юзера делаем нужные проверки, и запускаем поток, если приходит стоп, то также делаем проверки и останавливаем