From 503d0859ecc786e830bfdd3861dfa4dca3a22580 Mon Sep 17 00:00:00 2001 From: Shrimadhav U K Date: Wed, 2 Mar 2022 17:29:40 +0530 Subject: [PATCH] Add support for both mention buttons (#3680) --- telethon/types/_custom/button.py | 52 +++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/telethon/types/_custom/button.py b/telethon/types/_custom/button.py index 0ea42d40..34897110 100644 --- a/telethon/types/_custom/button.py +++ b/telethon/types/_custom/button.py @@ -56,9 +56,9 @@ class Button: _tl.KeyboardButtonCallback, _tl.KeyboardButtonGame, _tl.KeyboardButtonSwitchInline, - _tl.KeyboardButtonUserProfile, _tl.KeyboardButtonUrl, - _tl.InputKeyboardButtonUrlAuth + _tl.InputKeyboardButtonUrlAuth, + _tl.InputKeyboardButtonUserProfile )) @staticmethod @@ -170,11 +170,18 @@ class Button: ) @staticmethod - def mention(text, input_entity=None): + def inline_mention(text, input_entity=None): """ Creates a new inline button linked to the profile of user. + This will only work in Telegram versions released after December 7, 2021. + + Older clients will display unsupported message. + Args: + text: + Label text on the button + input_entity: Input entity of :tl:User to use for profile button. By default, this is the logged in user (itself), although @@ -185,11 +192,47 @@ class Button: For now, you cannot use ID or username for this argument. If you want to use different user, you must manually use `client.get_input_entity() `. + """ return _tl.InputKeyboardButtonUserProfile( text, utils.get_input_user(input_entity or _tl.InputUserSelf()) ) + + + @staticmethod + def mention(text, input_entity=None): + """ + Creates a text mentioning the user. + + This will only work in Telegram versions (only Telegram Desktop and Telegram X) released after December 7, 2021. + + Older clients will display unsupported message. + + Args: + text: + Label text on the button + + input_entity: + Input entity of :tl:User to use for profile button. + By default, this is the logged in user (itself), although + you may pass a different input peer. + + .. note:: + + For now, you cannot use ID or username for this argument. + If you want to use different user, you must manually use + `client.get_input_entity() `. + + """ + return types.KeyboardButtonUserProfile( + text, + ( + utils.get_input_user( + input_entity or _tl.InputUserSelf() + ).id + ) + ) @classmethod @@ -413,4 +456,5 @@ def build_reply_markup( return _tl.ReplyInlineMarkup(rows) # elif is_normal: return _tl.ReplyKeyboardMarkup( - rows, resize=resize, single_use=single_use, selective=selective) \ No newline at end of file + rows, resize=resize, single_use=single_use, selective=selective) +