From c60fcc495248325068e97bc57bc7e616ed0da479 Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Sat, 1 Aug 2026 16:10:48 +0100 Subject: [PATCH 1/4] Fix invalid syntax --- discordrpc/presence.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/discordrpc/presence.py b/discordrpc/presence.py index 4b6cba3..e085113 100644 --- a/discordrpc/presence.py +++ b/discordrpc/presence.py @@ -311,7 +311,7 @@ def _connect_pipe(self): """Override in subclass to establish the pipe connection. Returns True on success.""" raise NotImplementedError - def _send(self, payload, op=OP_FRAME: int): + def _send(self, payload, op:int=OP_FRAME): log.debug(payload) payload = json.dumps(payload).encode('UTF-8') @@ -319,7 +319,7 @@ def _send(self, payload, op=OP_FRAME: int): self._write(payload) - def _request(self, payload: dict, op=OP_FRAME: int) -> dict: + def _request(self, payload: dict, op:int=OP_FRAME) -> dict: self._send(payload, op) res = self._recv() if res.get("evt") == "ERROR": From 9dcce1a43b60b003e38c220c3451a88e6d88d210 Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Sat, 1 Aug 2026 16:11:16 +0100 Subject: [PATCH 2/4] feat add cover image and fix icons size --- discordrpc/types.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/discordrpc/types.py b/discordrpc/types.py index da79d11..57e339e 100644 --- a/discordrpc/types.py +++ b/discordrpc/types.py @@ -51,14 +51,20 @@ def __init__(self, data:dict=None): self.name: str = data.get("name") self.description: str = data.get("description") self.icon: str = self._parse_icon(data.get("icon")) + self.cover: str = self._parse_cover(data.get("cover_image")) self.verified: bool = data.get("is_verified", False) self.public: bool = data.get("bot_public", False) - def _parse_icon(self, icon_id:str, size:int=512) -> str: + def _parse_icon(self, icon_id:str, size:int=1024) -> str: if icon_id: return f"https://cdn.discordapp.com/app-icons/{self.id}/{icon_id}.png?size={size}" return "https://cdn.discordapp.com/embed/avatars/1.png" + def _parse_cover(self, icon_id:str, size:int=1024) -> str: + if icon_id: + return f"https://cdn.discordapp.com/app-icons/{self.id}/{icon_id}.png?size={size}&keep_aspect_ratio=true" + return "" + def __str__(self): return f"Application({self.name})" From 4647849bd3d7937fd037fb272d1f7fadfa8069d9 Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Sat, 1 Aug 2026 16:25:20 +0100 Subject: [PATCH 3/4] add windows import only --- discordrpc/presence.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/discordrpc/presence.py b/discordrpc/presence.py index e085113..3c8f933 100644 --- a/discordrpc/presence.py +++ b/discordrpc/presence.py @@ -15,11 +15,12 @@ from functools import cached_property import logging import time - -import msvcrt -import win32pipe import threading +if sys.platform == "win32": + import msvcrt + import win32pipe + OP_HANDSHAKE = 0 OP_FRAME = 1 OP_CLOSE = 2 From 4bdfca0c0eadc17a4026e4f0132821bf3bac4ad6 Mon Sep 17 00:00:00 2001 From: Super Zombi Date: Sat, 1 Aug 2026 16:58:33 +0100 Subject: [PATCH 4/4] add avatar_decoration --- discordrpc/types.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/discordrpc/types.py b/discordrpc/types.py index 57e339e..b867447 100644 --- a/discordrpc/types.py +++ b/discordrpc/types.py @@ -33,13 +33,18 @@ def __init__(self, data:dict=None): self.avatar: str = self._parse_avatar(data) self.bot: bool = data.get('bot', False) self.premium_type: int = int(data.get('premium_type', 0)) + self.avatar_decoration: str = self._parse_decoration((data.get("avatar_decoration_data") or {})) def _parse_avatar(self, data:dict, size:int=1024) -> str: if data.get('avatar'): ext = "gif" if data.get('avatar').startswith("a_") else "png" return f"https://cdn.discordapp.com/avatars/{self.id}/{data.get('avatar')}.{ext}?size={size}" - else: - return f"https://cdn.discordapp.com/embed/avatars/0.png" + return f"https://cdn.discordapp.com/embed/avatars/0.png" + + def _parse_decoration(self, data:dict, size:int=1024) -> str: + if data.get("asset"): + return f"https://cdn.discordapp.com/avatar-decoration-presets/{data.get('asset')}.png?size={size}" + return "" def __str__(self): return f"User({self.name})"