From 87ad98142022ca91ba773b2546eaa32e8c176381 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Mon, 27 May 2019 14:39:10 +0200 Subject: [PATCH] Add get_user_dc method --- pyrogram/client/methods/users/__init__.py | 4 +- pyrogram/client/methods/users/get_user_dc.py | 52 ++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 pyrogram/client/methods/users/get_user_dc.py diff --git a/pyrogram/client/methods/users/__init__.py b/pyrogram/client/methods/users/__init__.py index d67a18bd..a33a0f0c 100644 --- a/pyrogram/client/methods/users/__init__.py +++ b/pyrogram/client/methods/users/__init__.py @@ -18,6 +18,7 @@ from .delete_user_profile_photos import DeleteUserProfilePhotos from .get_me import GetMe +from .get_user_dc import GetUserDC from .get_user_profile_photos import GetUserProfilePhotos from .get_user_profile_photos_count import GetUserProfilePhotosCount from .get_users import GetUsers @@ -32,6 +33,7 @@ class Users( GetUsers, GetMe, UpdateUsername, - GetUserProfilePhotosCount + GetUserProfilePhotosCount, + GetUserDC ): pass diff --git a/pyrogram/client/methods/users/get_user_dc.py b/pyrogram/client/methods/users/get_user_dc.py new file mode 100644 index 00000000..27631e95 --- /dev/null +++ b/pyrogram/client/methods/users/get_user_dc.py @@ -0,0 +1,52 @@ +# Pyrogram - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-2019 Dan Tès +# +# This file is part of Pyrogram. +# +# Pyrogram is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Pyrogram is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Pyrogram. If not, see . + +from typing import Union + +from pyrogram.api import functions, types + +from ...ext import BaseClient + + +class GetUserDC(BaseClient): + def get_user_dc(self, user_id: Union[int, str]) -> Union[int, None]: + """Get the assigned data center (DC) of a user. + + Parameters: + user_id (``int`` | ``str``): + Unique identifier (int) or username (str) of the target chat. + For your personal cloud (Saved Messages) you can simply use "me" or "self". + For a contact that exists in your Telegram address book you can use his phone number (str). + + Returns: + ``int`` | ``None``: The DC identifier as integer, or None in case it wasn't possible to get it. + + Raises: + RPCError: In case of a Telegram RPC error. + """ + + r = self.send(functions.users.GetUsers(id=[self.resolve_peer(user_id)])) + + if r: + r = r[0] + + if r.photo: + if isinstance(r.photo.photo_small, types.FileLocation): + return r.photo.photo_small.dc_id + + return None