From f041499eb7ccca93aecb8a87435c8b7c68302c56 Mon Sep 17 00:00:00 2001 From: Zvonimir Rudinski Date: Tue, 9 Dec 2025 23:30:01 +0100 Subject: [PATCH] add discord rpc class --- discord.py | 9 --------- discord/models.py | 9 +++++++++ discord/rpc.py | 29 +++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 9 deletions(-) delete mode 100644 discord.py create mode 100644 discord/models.py create mode 100644 discord/rpc.py diff --git a/discord.py b/discord.py deleted file mode 100644 index c2ec840..0000000 --- a/discord.py +++ /dev/null @@ -1,9 +0,0 @@ -from pypresence import Presence -import os - -def get_rpc(): - app_id = os.getenv('DISCORD_APP_ID') - RPC = Presence(app_id) - RPC.connect() - return RPC - diff --git a/discord/models.py b/discord/models.py new file mode 100644 index 0000000..66e944e --- /dev/null +++ b/discord/models.py @@ -0,0 +1,9 @@ +from pydantic import BaseModel +from pypresence.types import ActivityType + +class DiscordRPCUpdatePayload(BaseModel): + title: str + subtitle: str + image_url: str + details: str + activity_type: ActivityType diff --git a/discord/rpc.py b/discord/rpc.py new file mode 100644 index 0000000..fb3d62f --- /dev/null +++ b/discord/rpc.py @@ -0,0 +1,29 @@ +from pypresence import Presence +from settings import settings +from discord.models import DiscordRPCPayload +import logging + +class DiscordRPC: + def __init__(self): + self.logger = logging.getLogger('DiscordRPC') + + self.logger.info("Connecting to Discord RPC...") + self.rpc = Presence(settings.discord_app_id) + self.rpc.connect() + self.logger.info("Connected to Discord RPC.") + + def update(self, payload: DiscordRPCPayload): + self.logger.info("Updating Discord RPC presence...") + self.rpc.update( + activity_type=payload.activity_type, + details=payload.title, + state=payload.subtitle, + large_image=payload.image_url, + large_text=payload.details + ) + self.logger.info("Discord RPC presence updated.") + + def clear(self): + self.logger.info("Clearing Discord RPC presence...") + self.rpc.clear() + self.logger.info("Discord RPC presence cleared.")