diff --git a/compiler/docs/compiler.py b/compiler/docs/compiler.py index 276a5243..dcd12cf1 100644 --- a/compiler/docs/compiler.py +++ b/compiler/docs/compiler.py @@ -146,6 +146,7 @@ def pyrogram_api(): stop_transmission export_session_string set_parse_mode + ping """, conversation=""" Conversation diff --git a/pyrogram/methods/utilities/__init__.py b/pyrogram/methods/utilities/__init__.py index 22d97434..28ff9eaa 100644 --- a/pyrogram/methods/utilities/__init__.py +++ b/pyrogram/methods/utilities/__init__.py @@ -19,6 +19,7 @@ from .add_handler import AddHandler from .export_session_string import ExportSessionString +from .ping import Ping from .remove_handler import RemoveHandler from .remove_error_handler import RemoveErrorHandler from .restart import Restart @@ -32,6 +33,7 @@ from .stop_transmission import StopTransmission class Utilities( AddHandler, ExportSessionString, + Ping, RemoveHandler, RemoveErrorHandler, Restart, diff --git a/pyrogram/methods/utilities/ping.py b/pyrogram/methods/utilities/ping.py new file mode 100644 index 00000000..f85838c9 --- /dev/null +++ b/pyrogram/methods/utilities/ping.py @@ -0,0 +1,46 @@ +# Pyrofork - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present Dan +# Copyright (C) 2022-present Mayuri-Chan +# +# This file is part of Pyrofork. +# +# Pyrofork 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. +# +# Pyrofork 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 Pyrofork. If not, see . + +from time import time + +import pyrogram +from pyrogram import raw + + +class Ping: + async def ping(self: "pyrogram.Client"): + """Measure the round-trip time (RTT) to the Telegram server. + + The ping method sends a request to the Telegram server and measures the time it takes to receive a response. + This can be useful for monitoring network latency and ensuring a stable connection to the server. + + Returns: + float: The round-trip time in milliseconds (ms). + + Example: + .. code-block:: python + + latency = await app.ping() + print(f"Ping: {latency} ms") + """ + start_time = time() + await self.invoke( + raw.functions.ping.Ping(ping_id=self.rnd_id()), + ) + return round((time() - start_time) * 1000.0, 3)