57 lines
1.7 KiB
Python
Executable File
57 lines
1.7 KiB
Python
Executable File
# discord_tools/scripts/status_updater.py
|
|
|
|
import os
|
|
import sys
|
|
import time
|
|
import datetime
|
|
|
|
# Add the parent directory to the Python path
|
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
project_root = os.path.dirname(os.path.dirname(script_dir))
|
|
sys.path.insert(0, project_root)
|
|
|
|
from discord_tools.config.settings import DEFAULT_STATUS_UPDATE_INTERVAL
|
|
from discord_tools.utils.api_utils import make_discord_request
|
|
|
|
def update_status(start_datetime):
|
|
"""
|
|
Update the Discord status with the time elapsed since start_datetime.
|
|
|
|
:param start_datetime: The datetime to calculate the elapsed time from
|
|
:return: True if the status was updated successfully, False otherwise
|
|
"""
|
|
now = datetime.datetime.now()
|
|
time_diff = now - start_datetime
|
|
|
|
days = time_diff.days
|
|
hours, remainder = divmod(time_diff.seconds, 3600)
|
|
minutes, _ = divmod(remainder, 60)
|
|
|
|
status_text = f"{days} days, {hours} hours, {minutes} minutes"
|
|
|
|
payload = {
|
|
"custom_status": {
|
|
"text": status_text
|
|
}
|
|
}
|
|
|
|
response = make_discord_request('PATCH', '/users/@me/settings', json=payload)
|
|
return response is not None
|
|
|
|
def main():
|
|
start_date = datetime.datetime(2024, 2, 24, 3, 43)
|
|
update_interval = DEFAULT_STATUS_UPDATE_INTERVAL
|
|
|
|
print(f"Starting status updater. Press Ctrl+C to exit.")
|
|
try:
|
|
while True:
|
|
if update_status(start_date):
|
|
print(f"Status updated successfully at {datetime.datetime.now()}")
|
|
else:
|
|
print("Failed to update status")
|
|
time.sleep(update_interval)
|
|
except KeyboardInterrupt:
|
|
print("\nStatus updater stopped.")
|
|
|
|
if __name__ == "__main__":
|
|
main() |