from ...tl.mtproto_request import MTProtoRequest


class UpdateChannelTooLong(MTProtoRequest):
    """Class generated by TLObjects' generator. All changes will be ERASED. Original .tl definition below.
    updateChannelTooLong#eb0467fb flags:# channel_id:int pts:flags.0?int = Update"""

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

    def __init__(self, channel_id, pts=None):
        """
        :param channel_id: Telegram type: «int».
        :param pts: 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.channel_id = channel_id
        self.pts = pts

    def on_send(self, writer):
        writer.write_int(UpdateChannelTooLong.constructor_id, signed=False)
        # Calculate the flags. This equals to those flag arguments which are NOT None
        flags = 0
        flags |= (1 << 0) if self.pts else 0
        writer.write_int(flags)

        writer.write_int(self.channel_id)
        if self.pts:
            writer.write_int(self.pts)

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

    def on_response(self, reader):
        flags = reader.read_int()

        self.channel_id = reader.read_int()
        if (flags & (1 << 0)) != 0:
            self.pts = reader.read_int()

    def __repr__(self):
        return 'updateChannelTooLong#eb0467fb flags:# channel_id:int pts:flags.0?int = Update'

    def __str__(self):
        return '(updateChannelTooLong (ID: 0xeb0467fb) = (channel_id={}, pts={}))'.format(str(self.channel_id), str(self.pts))
