feat: add KeyboardButtonRequestUser and KeyboardButtonRequestChat

This commit is contained in:
Oleg A 2023-02-03 21:59:47 +03:00
parent 939e520287
commit c2dadc5635
No known key found for this signature in database
GPG key ID: 5FE046817A9657C5

View file

@ -2,6 +2,7 @@ import typing
from . import base
from . import fields
from .chat_administrator_rights import ChatAdministratorRights
from .web_app_info import WebAppInfo
@ -105,6 +106,76 @@ class ReplyKeyboardMarkup(base.TelegramObject):
return self
class KeyboardButtonRequestUser(base.TelegramObject):
"""
This object defines the criteria used to request a suitable user.
The identifier of the selected user will be shared with the bot when
the corresponding button is pressed.
https://core.telegram.org/bots/api#keyboardbuttonrequestuser
"""
request_id: base.Integer = fields.Field()
user_is_bot: base.Boolean = fields.Field()
user_is_premium: base.Boolean = fields.Field()
def __init__(
self,
request_id: base.Integer,
user_is_bot: typing.Optional[base.Boolean] = None,
user_is_premium: typing.Optional[base.Boolean] = None,
**kwargs,
):
super().__init__(
request_id=request_id,
user_is_bot=user_is_bot,
user_is_premium=user_is_premium,
**kwargs,
)
class KeyboardButtonRequestChat(base.TelegramObject):
"""
This object defines the criteria used to request a suitable chat.
The identifier of the selected chat will be shared with the bot when
the corresponding button is pressed.
https://core.telegram.org/bots/api#keyboardbuttonrequestchat
"""
request_id: base.Integer = fields.Field()
chat_is_channel: base.Boolean = fields.Field()
chat_is_forum: base.Boolean = fields.Field()
chat_has_username: base.Boolean = fields.Field()
chat_is_created: base.Boolean = fields.Field()
user_administrator_rights: ChatAdministratorRights = fields.Field()
bot_administrator_rights: ChatAdministratorRights = fields.Field()
bot_is_member: base.Boolean = fields.Field()
def __init__(
self,
request_id: base.Integer,
chat_is_channel: base.Boolean,
chat_is_forum: typing.Optional[base.Boolean] = None,
chat_has_username: typing.Optional[base.Boolean] = None,
chat_is_created: typing.Optional[base.Boolean] = None,
user_administrator_rights: typing.Optional[base.Boolean] = None,
bot_administrator_rights: typing.Optional[base.Boolean] = None,
bot_is_member: typing.Optional[base.Boolean] = None,
**kwargs,
):
super().__init__(
request_id=request_id,
chat_is_channel=chat_is_channel,
chat_is_forum=chat_is_forum,
chat_has_username=chat_has_username,
chat_is_created=chat_is_created,
user_administrator_rights=user_administrator_rights,
bot_administrator_rights=bot_administrator_rights,
bot_is_member=bot_is_member,
**kwargs,
)
class KeyboardButton(base.TelegramObject):
"""
This object represents one button of the reply keyboard.
@ -118,18 +189,24 @@ class KeyboardButton(base.TelegramObject):
https://core.telegram.org/bots/api#keyboardbutton
"""
text: base.String = fields.Field()
request_user: KeyboardButtonRequestUser = fields.Field()
request_chat: KeyboardButtonRequestUser = fields.Field()
request_contact: base.Boolean = fields.Field()
request_location: base.Boolean = fields.Field()
request_poll: KeyboardButtonPollType = fields.Field()
web_app: WebAppInfo = fields.Field(base=WebAppInfo)
def __init__(self, text: base.String,
request_user: typing.Optional[KeyboardButtonRequestUser] = None,
request_chat: typing.Optional[KeyboardButtonRequestUser] = None,
request_contact: base.Boolean = None,
request_location: base.Boolean = None,
request_poll: KeyboardButtonPollType = None,
web_app: WebAppInfo = None,
**kwargs):
super(KeyboardButton, self).__init__(text=text,
request_user=request_user,
request_chat=request_chat,
request_contact=request_contact,
request_location=request_location,
request_poll=request_poll,
@ -137,6 +214,7 @@ class KeyboardButton(base.TelegramObject):
**kwargs)
class ReplyKeyboardRemove(base.TelegramObject):
"""
Upon receiving a message with this object, Telegram clients will remove the current custom keyboard