Я скажу лишь про то, с чем сам сталкивался.
Я одно время юзал один файл, в котором был фоновый процесс (проверка времени: если наступал определенный временной промежуток -- бот отправлял сообщение). Так вот я там использовал while True. И несмотря на то, что у меня было указано четко час, минута и
секунда, когда нужно было отправить сообщение, бот принимал за долю секунды несколько запросов, которые вставали в очередь, и бот несколько раз дублировал сообщение.
В моем случае, возможным решением являлось решения от
@Loshadkin, который предложил использовать threading после отправки сообщения (в твоём случае после принта), дабы мне и time.sleep не помогал, и сообщения все равно дублировались.
Весь трабл обращения с этим вопросом ко мне -- я не шарю за телетон, увы. Я даже не знаю, как загуглить этот вопрос корректно)