diff --git a/pyrogram/api/core/object.py b/pyrogram/api/core/object.py index bec9d015..a74eb876 100644 --- a/pyrogram/api/core/object.py +++ b/pyrogram/api/core/object.py @@ -47,6 +47,15 @@ class Object: pass +def remove_none(obj): + if isinstance(obj, (list, tuple, set)): + return type(obj)(remove_none(x) for x in obj if x is not None) + elif isinstance(obj, dict): + return type(obj)((remove_none(k), remove_none(v)) for k, v in obj.items() if k is not None and v is not None) + else: + return obj + + class Encoder(JSONEncoder): def default(self, o: Object): try: @@ -57,7 +66,10 @@ class Encoder(JSONEncoder): else: return repr(o) - return OrderedDict( - [("_", objects.get(getattr(o, "ID", None), None))] - + [i for i in content.items()] - ) + if "pyrogram" in objects.get(getattr(o, "ID", "")): + return remove_none(OrderedDict([i for i in content.items()])) + else: + return OrderedDict( + [("_", objects.get(getattr(o, "ID", None), None))] + + [i for i in content.items()] + )