diff --git a/backend/src/userbot/modules/raw_json.py b/backend/src/userbot/modules/raw_json.py index 71139f4..adff2b0 100644 --- a/backend/src/userbot/modules/raw_json.py +++ b/backend/src/userbot/modules/raw_json.py @@ -1,8 +1,23 @@ +import json +from typing import Any + from pyrogram.raw.core import TLObject -from pyrogram.types import Object +from pyrogram.types import Contact, Object EMPTY_JSON = "{}" +PHONE_KEY = "phone_number" + + +def _default(obj: Any) -> Any: # noqa: ANN401 + if isinstance(obj, TLObject): + return TLObject.default(obj) + data = Object.default(obj) + if isinstance(obj, Contact) and isinstance(data, dict) and PHONE_KEY in data: + data[PHONE_KEY] = obj.phone_number + return data def raw_json(obj: Object | TLObject | None) -> str: - return EMPTY_JSON if obj is None else str(obj) + if obj is None: + return EMPTY_JSON + return json.dumps(obj, indent=4, default=_default, ensure_ascii=False)