Идея простая: опрос (polling) либо хук (webhooks). В первом случае вы бесконечно в цикле опрашиваете телегу о новых сообщениях, во втором - телега самостоятельно присылает новые сообщения на ваш сервер.
Также важно заметить, что в однопоточной программе может быть одновременно запущен только один поток (это логично). Поэтому вы не можете одновременно с опросом бота из телеги запустить свой бесконечный цикл.
Из этого следует, что вам нужно либо подписаться на событие аля
on_update
, либо в своём цикле вызывать каждый раз update бота:
while(True):
app._update() # там должен быть некий скрытый метод
time.sleep(0.1) # если убрать sleep, то будут реальные fps, но многократно возрастёт нагрузка на цп в лс