from pypresence import Presence from settings import settings from discord.models import DiscordRPCUpdatePayload import logging class DiscordRPC: """ Client for interacting with Discord Rich Presence (RPC). """ def __init__(self): """ Initializes the Discord RPC client and connects to Discord via IPC. """ 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: DiscordRPCUpdatePayload): """ Updates the Discord RPC presence with the provided payload. Args: payload (DiscordRPCUpdatePayload): The payload containing presence information. """ 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, start=payload.start, end=payload.end ) self.logger.info("Discord RPC presence updated.") def clear(self): """ Clears the Discord RPC presence. """ self.logger.info("Clearing Discord RPC presence...") self.rpc.clear() self.logger.info("Discord RPC presence cleared.")