Самым простым способом будет реализовать всё это через
threading и
time.sleep()
Здесь создаётся 2 потока, которые отправляют сообщения, а потом уходят в сон на 24 часа
import datetime as dt
from threading import Thread
from time import sleep
class SendThread(Thread):
def __init__(self, hours: int):
Thread.__init__(self)
self.hours = hours
def run(self):
# Здесь код, который будет выполняться в потоке
day_to_seconds = 24 * 60 * 60
now = dt.datetime.now()
today_time = now - dt.datetime(year=now.year, month=now.month, day=now.day)
seconds = today_time / dt.timedelta(seconds=1)
time_to_next_call = self.hours * 60 * 60 - seconds # Время в секундах до первого вызова
if time_to_next_call < 0:
time_to_next_call += day_to_seconds
sleep(time_to_next_call)
while True:
# Ваш код (отправка сообщения)
# ...
sleep(day_to_seconds)
# Ваш код...
if command == "/start":
send_12 = SendThread(hours=12) # сообщение #1
send_18 = SendThread(hours=18) # сообщение #2
send_12.start()
send_18.start()