You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
01/01OS/01OS/server/skills/schedule.py

34 lines
1.3 KiB

import threading
from datetime import datetime
import json
import subprocess
import requests
def send_request(message) -> None:
url = "http://localhost:8000/"
data = {"text": message}
try:
response = requests.post(url, json=data)
response.raise_for_status()
except requests.RequestException as e:
print(f"Request failed: {e}")
def schedule(days=0, hours=0, mins=0, secs=0, target_datetime=None, message="") -> None:
"""Schedules a reminder after a specified delay or for a specific datetime. The delay is defined by days, hours, minutes, and seconds. If a target_datetime is provided, it schedules the reminder for that datetime instead."""
if target_datetime is None:
# Calculate the delay in seconds if no target_datetime is provided
delay = days * 86400 + hours * 3600 + mins * 60 + secs
else:
# Calculate the delay in seconds from now until the target datetime
now = datetime.now()
delay = (target_datetime - now).total_seconds()
# Ensure delay is non-negative
delay = max(0, delay)
# Create a timer
timer = threading.Timer(delay, send_request, args=[message])
# Start the timer
timer.start()