From 432b9b71d9867fe6fdd7a551cb5589760634fb22 Mon Sep 17 00:00:00 2001 From: AEIMS <66196824+aeims@users.noreply.github.com> Date: Fri, 2 May 2025 19:53:09 +0330 Subject: [PATCH] open_url argument added to prevent browser from opening passing open_url=True will open browser and return True on success else it will just return the button's URL to be processed via code. --- telethon/tl/custom/messagebutton.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/telethon/tl/custom/messagebutton.py b/telethon/tl/custom/messagebutton.py index 6ec17fbd..359730e7 100644 --- a/telethon/tl/custom/messagebutton.py +++ b/telethon/tl/custom/messagebutton.py @@ -65,7 +65,7 @@ class MessageButton: if isinstance(self.button, types.KeyboardButtonUrl): return self.button.url - async def click(self, share_phone=None, share_geo=None, *, password=None): + async def click(self, share_phone=None, share_geo=None, *, password=None, open_url=None): """ Emulates the behaviour of clicking this button. @@ -79,7 +79,8 @@ class MessageButton: :tl:`StartBotRequest` will be invoked and the resulting updates returned. - If it's a :tl:`KeyboardButtonUrl`, the URL of the button will + If it's a :tl:`KeyboardButtonUrl`, the ``URL`` of the button will + be returned. If you pass ``open_url=True`` the URL of the button will be passed to ``webbrowser.open`` and return `True` on success. If it's a :tl:`KeyboardButtonRequestPhone`, you must indicate that you @@ -116,8 +117,10 @@ class MessageButton: bot=self._bot, peer=self._chat, start_param=self.button.query )) elif isinstance(self.button, types.KeyboardButtonUrl): - if "webbrowser" in sys.modules: - return webbrowser.open(self.button.url) + if open_url: + if "webbrowser" in sys.modules: + return webbrowser.open(self.button.url) + return self.button.url elif isinstance(self.button, types.KeyboardButtonGame): req = functions.messages.GetBotCallbackAnswerRequest( peer=self._chat, msg_id=self._msg_id, game=True