from ...tl.mtproto_request import MTProtoRequest


class UpdateBotWebhookJSONQuery(MTProtoRequest):
    """Class generated by TLObjects' generator. All changes will be ERASED. Original .tl definition below.
    updateBotWebhookJSONQuery#9b9240a6 query_id:long data:DataJSON timeout:int = Update"""

    # Telegram's constructor ID (and unique identifier) for this class
    constructor_id = 0x9b9240a6

    def __init__(self, query_id, data, timeout):
        """
        :param query_id: Telegram type: «long».
        :param data: Telegram type: «DataJSON».
        :param timeout: Telegram type: «int».

        Constructor for Update: Instance of either UpdateNewMessage, UpdateMessageID, UpdateDeleteMessages, UpdateUserTyping, UpdateChatUserTyping, UpdateChatParticipants, UpdateUserStatus, UpdateUserName, UpdateUserPhoto, UpdateContactRegistered, UpdateContactLink, UpdateNewEncryptedMessage, UpdateEncryptedChatTyping, UpdateEncryption, UpdateEncryptedMessagesRead, UpdateChatParticipantAdd, UpdateChatParticipantDelete, UpdateDcOptions, UpdateUserBlocked, UpdateNotifySettings, UpdateServiceNotification, UpdatePrivacy, UpdateUserPhone, UpdateReadHistoryInbox, UpdateReadHistoryOutbox, UpdateWebPage, UpdateReadMessagesContents, UpdateChannelTooLong, UpdateChannel, UpdateNewChannelMessage, UpdateReadChannelInbox, UpdateDeleteChannelMessages, UpdateChannelMessageViews, UpdateChatAdmins, UpdateChatParticipantAdmin, UpdateNewStickerSet, UpdateStickerSetsOrder, UpdateStickerSets, UpdateSavedGifs, UpdateBotInlineQuery, UpdateBotInlineSend, UpdateEditChannelMessage, UpdateChannelPinnedMessage, UpdateBotCallbackQuery, UpdateEditMessage, UpdateInlineBotCallbackQuery, UpdateReadChannelOutbox, UpdateDraftMessage, UpdateReadFeaturedStickers, UpdateRecentStickers, UpdateConfig, UpdatePtsChanged, UpdateChannelWebPage, UpdateDialogPinned, UpdatePinnedDialogs, UpdateBotWebhookJSON, UpdateBotWebhookJSONQuery, UpdateBotShippingQuery, UpdateBotPrecheckoutQuery, UpdatePhoneCall.
        """
        super().__init__()

        self.query_id = query_id
        self.data = data
        self.timeout = timeout

    def on_send(self, writer):
        writer.write_int(UpdateBotWebhookJSONQuery.constructor_id, signed=False)
        writer.write_long(self.query_id)
        self.data.on_send(writer)
        writer.write_int(self.timeout)

    @staticmethod
    def empty():
        """Returns an "empty" instance (all attributes are None)"""
        return UpdateBotWebhookJSONQuery(None, None, None)

    def on_response(self, reader):
        self.query_id = reader.read_long()
        self.data = reader.tgread_object()
        self.timeout = reader.read_int()

    def __repr__(self):
        return 'updateBotWebhookJSONQuery#9b9240a6 query_id:long data:DataJSON timeout:int = Update'

    def __str__(self):
        return '(updateBotWebhookJSONQuery (ID: 0x9b9240a6) = (query_id={}, data={}, timeout={}))'.format(str(self.query_id), str(self.data), str(self.timeout))
