from ...tl.mtproto_request import MTProtoRequest


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

    # Telegram's constructor (U)ID for this class
    constructor_id = 0xeb0467fb
    # Also the ID of its resulting type for fast checks
    subclass_of_id = 0x9f89304e

    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, UpdateLangPackTooLong, UpdateLangPack.
        """
        super().__init__()

        self.channel_id = channel_id
        self.pts = pts

    def to_dict(self):
        return {
            'channel_id': self.channel_id,
            'pts': self.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 (attributes=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))
