from pypresence import Presence from settings import settings from discord.models import DiscordRPCUpdatePayload import logging class DiscordRPC: def __init__(self): self.logger = logging.getLogger('DiscordRPC') self.logger.info("Connecting to Discord RPC...") self.last_update_id = None self.rpc = Presence(settings.discord_app_id) self.rpc.connect() self.logger.info("Connected to Discord RPC.") def update(self, payload: DiscordRPCUpdatePayload): if self.last_update_id == payload.id: self.logger.debug("No update needed for Discord RPC presence.") return 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): self.logger.info("Clearing Discord RPC presence...") self.rpc.clear() self.logger.info("Discord RPC presence cleared.")