diff --git a/core/discord_presence.py b/core/discord_presence.py new file mode 100644 index 0000000..202ba50 --- /dev/null +++ b/core/discord_presence.py @@ -0,0 +1,69 @@ +import time +from discordrp import Presence + +class DiscordPresence: + def __init__(self, client_id="1430908404095909960"): + self.client_id = client_id + self.presence = None + self.running = False + self.start_time = None + + def start(self): + """Start the Discord Rich Presence""" + if self.running: + print("Presence is already running") + return + + self.start_time = int(time.time()) + self.presence = Presence(self.client_id) + self.presence.__enter__() + + self.presence.set( + { + "assets": { + "large_image": "2ktanbig", + "large_text": "CLARA" + }, + "buttons": [ + { + "label": "Let CLARA help you!", + "url": "https://github.com/n0va-bot/CLARA" + } + ] + } + ) + + self.running = True + print("Discord presence started") + + def end(self): + """Stop the Discord Rich Presence""" + if not self.running: + print("Presence is not running") + return + + try: + if self.presence: + self.presence.__exit__(None, None, None) + self.presence = None + except Exception as e: + print(f"Error closing presence: {e}") + finally: + self.running = False + print("Discord presence stopped") + + def update(self, data): + """Update the presence with new data""" + if not self.running or not self.presence: + print("Presence is not running. Call start() first.") + return + + self.presence.set(data) + + def __del__(self): + """Cleanup when object is destroyed""" + if self.running: + self.end() + + +presence = DiscordPresence() \ No newline at end of file diff --git a/main.py b/main.py index c59ca14..db1dcca 100644 --- a/main.py +++ b/main.py @@ -5,6 +5,7 @@ from PySide6 import QtCore, QtGui, QtWidgets from core.file_search import find from core.web_search import MullvadLetaWrapper +from core.discord_presence import presence ASSET = Path(__file__).parent / "assets" / "2ktan.png" @@ -367,6 +368,7 @@ def main(): restart_enabled = "--restart" in sys.argv pet = MainWindow(restart=restart_enabled) + presence.start() # bottom right corner screen_geometry = app.primaryScreen().availableGeometry() @@ -378,6 +380,7 @@ def main(): pet.show() sys.exit(app.exec()) + presence.end() if __name__ == "__main__": main() \ No newline at end of file