Add support for both mention buttons (#3680)

This commit is contained in:
Shrimadhav U K 2022-03-02 17:29:40 +05:30 committed by GitHub
parent 26109d5916
commit 503d0859ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -56,9 +56,9 @@ class Button:
_tl.KeyboardButtonCallback, _tl.KeyboardButtonCallback,
_tl.KeyboardButtonGame, _tl.KeyboardButtonGame,
_tl.KeyboardButtonSwitchInline, _tl.KeyboardButtonSwitchInline,
_tl.KeyboardButtonUserProfile,
_tl.KeyboardButtonUrl, _tl.KeyboardButtonUrl,
_tl.InputKeyboardButtonUrlAuth _tl.InputKeyboardButtonUrlAuth,
_tl.InputKeyboardButtonUserProfile
)) ))
@staticmethod @staticmethod
@ -170,11 +170,18 @@ class Button:
) )
@staticmethod @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. 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: Args:
text:
Label text on the button
input_entity: input_entity:
Input entity of :tl:User to use for profile button. Input entity of :tl:User to use for profile button.
By default, this is the logged in user (itself), although 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. For now, you cannot use ID or username for this argument.
If you want to use different user, you must manually use If you want to use different user, you must manually use
`client.get_input_entity() <telethon.client.users.UserMethods.get_input_entity>`. `client.get_input_entity() <telethon.client.users.UserMethods.get_input_entity>`.
""" """
return _tl.InputKeyboardButtonUserProfile( return _tl.InputKeyboardButtonUserProfile(
text, text,
utils.get_input_user(input_entity or _tl.InputUserSelf()) 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() <telethon.client.users.UserMethods.get_input_entity>`.
"""
return types.KeyboardButtonUserProfile(
text,
(
utils.get_input_user(
input_entity or _tl.InputUserSelf()
).id
)
)
@classmethod @classmethod
@ -413,4 +456,5 @@ def build_reply_markup(
return _tl.ReplyInlineMarkup(rows) return _tl.ReplyInlineMarkup(rows)
# elif is_normal: # elif is_normal:
return _tl.ReplyKeyboardMarkup( return _tl.ReplyKeyboardMarkup(
rows, resize=resize, single_use=single_use, selective=selective) rows, resize=resize, single_use=single_use, selective=selective)