Ответы пользователя по тегу Telegram
  • Как отправить сообщение для отдельного пользователя через определенный промежуток времени?

    FAbrickA
    @FAbrickA
    Программист
    Самым простым способом будет реализовать всё это через 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()
    Ответ написан
    8 комментариев